Fix CI publish failures and add missing config schema fields

- CI publish job failed because it tried to re-publish existing versions
  (npm returns 404 for scoped packages on duplicate version). Added a
  version-exists check before npm publish to skip gracefully.
- Also fixed the auth env var from NPM_TOKEN to NODE_AUTH_TOKEN which
  is what actions/setup-node's registry-url option expects.
- Added missing core and operational fields to getConfigSchema() so the
  Paperclip UI surfaces model, effort, maxTurnsPerRun, skipPermissions,
  instructionsFilePath, timeoutSec, and graceSec alongside existing K8s
  infrastructure fields.
- Bumped version to 0.1.10.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
2026-04-12 15:02:54 +00:00
parent 545950daf2
commit e75a62b329
3 changed files with 68 additions and 3 deletions
+10 -2
View File
@@ -47,6 +47,14 @@ jobs:
registry-url: "https://registry.npmjs.org"
cache: "npm"
- run: npm publish --access public
- name: Publish (skip if version already exists)
run: |
PKG_NAME=$(node -p "require('./package.json').name")
PKG_VERSION=$(node -p "require('./package.json').version")
if npm view "${PKG_NAME}@${PKG_VERSION}" version 2>/dev/null; then
echo "Version ${PKG_VERSION} already published — skipping."
else
npm publish --access public
fi
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@farhoodliquor/paperclip-adapter-claude-k8s",
"version": "0.1.9",
"version": "0.1.10",
"description": "Paperclip adapter plugin that runs Claude Code agents as Kubernetes Jobs",
"license": "MIT",
"repository": {
+57
View File
@@ -24,6 +24,63 @@ interface AdapterConfigSchema {
export function getConfigSchema(): AdapterConfigSchema {
const fields: ConfigFieldSchema[] = [
// Core Claude fields
{
type: "select",
key: "model",
label: "Model",
hint: "Claude model to use for this agent.",
options: [
{ value: "claude-opus-4-6", label: "Claude Opus 4.6" },
{ value: "claude-sonnet-4-6", label: "Claude Sonnet 4.6" },
{ value: "claude-haiku-4-6", label: "Claude Haiku 4.6" },
{ value: "claude-sonnet-4-5-20250929", label: "Claude Sonnet 4.5" },
{ value: "claude-haiku-4-5-20251001", label: "Claude Haiku 4.5" },
],
},
{
type: "select",
key: "effort",
label: "Reasoning Effort",
hint: "Reasoning effort level passed via --effort.",
options: [
{ value: "low", label: "Low" },
{ value: "medium", label: "Medium" },
{ value: "high", label: "High" },
],
},
{
type: "number",
key: "maxTurnsPerRun",
label: "Max Turns Per Run",
hint: "Maximum number of turns for a single run. 0 means unlimited.",
},
{
type: "toggle",
key: "dangerouslySkipPermissions",
label: "Skip Permissions",
hint: "Pass --dangerously-skip-permissions to Claude. Enabled by default for unattended K8s Jobs.",
default: true,
},
{
type: "text",
key: "instructionsFilePath",
label: "Instructions File Path",
hint: "Absolute path to a markdown instructions file injected at runtime via --append-system-prompt-file.",
},
// Operational
{
type: "number",
key: "timeoutSec",
label: "Timeout (seconds)",
hint: "Run timeout in seconds. 0 means no timeout.",
},
{
type: "number",
key: "graceSec",
label: "Grace Period (seconds)",
hint: "Additional grace period before adapter gives up after Job deadline. Default: 60.",
},
// Kubernetes
{
type: "text",