@paperclipai/server 2026.817.0-nightly.0 → 2026.817.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/hermes-gateway-doc.d.ts +1 -1
- package/dist/adapters/hermes-gateway-doc.d.ts.map +1 -1
- package/dist/adapters/hermes-gateway-doc.js +1 -1
- package/dist/adapters/plugin-loader.d.ts.map +1 -1
- package/dist/adapters/plugin-loader.js +2 -3
- package/dist/adapters/plugin-loader.js.map +1 -1
- package/dist/agent-auth-jwt.d.ts.map +1 -1
- package/dist/agent-auth-jwt.js +2 -8
- package/dist/agent-auth-jwt.js.map +1 -1
- package/dist/app.d.ts +1 -5
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +15 -193
- package/dist/app.js.map +1 -1
- package/dist/built-ins/agents/summarizer/AGENTS.md +2 -2
- package/dist/built-ins/agents/summarizer/routines/refresh-stale-summaries.md +0 -1
- package/dist/db-errors.d.ts +0 -9
- package/dist/db-errors.d.ts.map +1 -1
- package/dist/db-errors.js +0 -19
- package/dist/db-errors.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +2 -2
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -162
- package/dist/index.js.map +1 -1
- package/dist/middleware/auth.d.ts +1 -13
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js +41 -92
- package/dist/middleware/auth.js.map +1 -1
- package/dist/middleware/cloud-tenant-actor.test.js +1 -26
- package/dist/middleware/cloud-tenant-actor.test.js.map +1 -1
- package/dist/middleware/error-handler.d.ts.map +1 -1
- package/dist/middleware/error-handler.js +2 -11
- package/dist/middleware/error-handler.js.map +1 -1
- package/dist/middleware/logger.d.ts.map +1 -1
- package/dist/middleware/logger.js +33 -7
- package/dist/middleware/logger.js.map +1 -1
- package/dist/middleware/private-hostname-guard.d.ts.map +1 -1
- package/dist/middleware/private-hostname-guard.js +6 -11
- package/dist/middleware/private-hostname-guard.js.map +1 -1
- package/dist/middleware/redact-sensitive.d.ts.map +1 -1
- package/dist/middleware/redact-sensitive.js +0 -11
- package/dist/middleware/redact-sensitive.js.map +1 -1
- package/dist/realtime/live-events-ws.d.ts +0 -12
- package/dist/realtime/live-events-ws.d.ts.map +1 -1
- package/dist/realtime/live-events-ws.js +0 -20
- package/dist/realtime/live-events-ws.js.map +1 -1
- package/dist/redaction.js +1 -1
- package/dist/redaction.js.map +1 -1
- package/dist/routes/access.d.ts +0 -2
- package/dist/routes/access.d.ts.map +1 -1
- package/dist/routes/access.js +10 -21
- package/dist/routes/access.js.map +1 -1
- package/dist/routes/agents.d.ts +0 -35
- package/dist/routes/agents.d.ts.map +1 -1
- package/dist/routes/agents.js +8 -872
- package/dist/routes/agents.js.map +1 -1
- package/dist/routes/companies.d.ts +1 -5
- package/dist/routes/companies.d.ts.map +1 -1
- package/dist/routes/companies.js +30 -467
- package/dist/routes/companies.js.map +1 -1
- package/dist/routes/environments.d.ts +3 -12
- package/dist/routes/environments.d.ts.map +1 -1
- package/dist/routes/environments.js +23 -139
- package/dist/routes/environments.js.map +1 -1
- package/dist/routes/execution-workspaces.d.ts.map +1 -1
- package/dist/routes/execution-workspaces.js +70 -240
- package/dist/routes/execution-workspaces.js.map +1 -1
- package/dist/routes/file-resources.d.ts +1 -10
- package/dist/routes/file-resources.d.ts.map +1 -1
- package/dist/routes/file-resources.js +2 -142
- package/dist/routes/file-resources.js.map +1 -1
- package/dist/routes/index.d.ts +1 -2
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +1 -2
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/instance-settings.d.ts.map +1 -1
- package/dist/routes/instance-settings.js +1 -20
- package/dist/routes/instance-settings.js.map +1 -1
- package/dist/routes/issues.d.ts.map +1 -1
- package/dist/routes/issues.js +235 -750
- package/dist/routes/issues.js.map +1 -1
- package/dist/routes/openapi.d.ts.map +1 -1
- package/dist/routes/openapi.js +2 -316
- package/dist/routes/openapi.js.map +1 -1
- package/dist/routes/secrets.d.ts.map +1 -1
- package/dist/routes/secrets.js +1 -11
- package/dist/routes/secrets.js.map +1 -1
- package/dist/routes/tool-access.d.ts.map +1 -1
- package/dist/routes/tool-access.js +52 -87
- package/dist/routes/tool-access.js.map +1 -1
- package/dist/routes/workspace-runtime-service-authz.d.ts +1 -11
- package/dist/routes/workspace-runtime-service-authz.d.ts.map +1 -1
- package/dist/routes/workspace-runtime-service-authz.js +16 -18
- package/dist/routes/workspace-runtime-service-authz.js.map +1 -1
- package/dist/services/access.d.ts.map +1 -1
- package/dist/services/activity.d.ts +1 -1
- package/dist/services/agents.d.ts +0 -21
- package/dist/services/agents.d.ts.map +1 -1
- package/dist/services/agents.js +1 -121
- package/dist/services/agents.js.map +1 -1
- package/dist/services/attention.d.ts +1 -20
- package/dist/services/attention.d.ts.map +1 -1
- package/dist/services/attention.js +1 -45
- package/dist/services/attention.js.map +1 -1
- package/dist/services/authorization.d.ts +2 -2
- package/dist/services/authorization.d.ts.map +1 -1
- package/dist/services/authorization.js +46 -89
- package/dist/services/authorization.js.map +1 -1
- package/dist/services/board-auth.d.ts.map +1 -1
- package/dist/services/board-auth.js +1 -40
- package/dist/services/board-auth.js.map +1 -1
- package/dist/services/built-in-agents.d.ts.map +1 -1
- package/dist/services/built-in-agents.js +4 -20
- package/dist/services/built-in-agents.js.map +1 -1
- package/dist/services/bundled-plugins.d.ts +1 -11
- package/dist/services/bundled-plugins.d.ts.map +1 -1
- package/dist/services/bundled-plugins.js +1 -46
- package/dist/services/bundled-plugins.js.map +1 -1
- package/dist/services/companies.d.ts.map +1 -1
- package/dist/services/companies.js +0 -7
- package/dist/services/companies.js.map +1 -1
- package/dist/services/company-export-readme.js +1 -1
- package/dist/services/company-export-readme.js.map +1 -1
- package/dist/services/company-portability.d.ts.map +1 -1
- package/dist/services/company-portability.js +3 -128
- package/dist/services/company-portability.js.map +1 -1
- package/dist/services/cross-issue-influence-limit.d.ts +1 -7
- package/dist/services/cross-issue-influence-limit.d.ts.map +1 -1
- package/dist/services/cross-issue-influence-limit.js.map +1 -1
- package/dist/services/environment-config.d.ts +0 -15
- package/dist/services/environment-config.d.ts.map +1 -1
- package/dist/services/environment-config.js +10 -56
- package/dist/services/environment-config.js.map +1 -1
- package/dist/services/environment-execution-target.d.ts.map +1 -1
- package/dist/services/environment-execution-target.js +11 -61
- package/dist/services/environment-execution-target.js.map +1 -1
- package/dist/services/environment-run-orchestrator.d.ts +1 -16
- package/dist/services/environment-run-orchestrator.d.ts.map +1 -1
- package/dist/services/environment-run-orchestrator.js +1 -1
- package/dist/services/environment-run-orchestrator.js.map +1 -1
- package/dist/services/environment-runtime.d.ts +2 -178
- package/dist/services/environment-runtime.d.ts.map +1 -1
- package/dist/services/environment-runtime.js +96 -1035
- package/dist/services/environment-runtime.js.map +1 -1
- package/dist/services/environments.d.ts +0 -75
- package/dist/services/environments.d.ts.map +1 -1
- package/dist/services/environments.js +8 -199
- package/dist/services/environments.js.map +1 -1
- package/dist/services/execution-allowlist.d.ts +4 -16
- package/dist/services/execution-allowlist.d.ts.map +1 -1
- package/dist/services/execution-allowlist.js +16 -35
- package/dist/services/execution-allowlist.js.map +1 -1
- package/dist/services/execution-allowlist.test.js +0 -33
- package/dist/services/execution-allowlist.test.js.map +1 -1
- package/dist/services/execution-workspace-policy.d.ts +1 -14
- package/dist/services/execution-workspace-policy.d.ts.map +1 -1
- package/dist/services/execution-workspace-policy.js +12 -29
- package/dist/services/execution-workspace-policy.js.map +1 -1
- package/dist/services/execution-workspaces.d.ts +0 -89
- package/dist/services/execution-workspaces.d.ts.map +1 -1
- package/dist/services/execution-workspaces.js +120 -951
- package/dist/services/execution-workspaces.js.map +1 -1
- package/dist/services/heartbeat-run-summary.d.ts +0 -1
- package/dist/services/heartbeat-run-summary.d.ts.map +1 -1
- package/dist/services/heartbeat-run-summary.js +3 -19
- package/dist/services/heartbeat-run-summary.js.map +1 -1
- package/dist/services/heartbeat.d.ts +2 -18
- package/dist/services/heartbeat.d.ts.map +1 -1
- package/dist/services/heartbeat.js +16 -369
- package/dist/services/heartbeat.js.map +1 -1
- package/dist/services/import-write-types.d.ts +0 -12
- package/dist/services/import-write-types.d.ts.map +1 -1
- package/dist/services/index.d.ts +0 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +0 -1
- package/dist/services/index.js.map +1 -1
- package/dist/services/instance-settings.d.ts +1 -10
- package/dist/services/instance-settings.d.ts.map +1 -1
- package/dist/services/instance-settings.js +9 -16
- package/dist/services/instance-settings.js.map +1 -1
- package/dist/services/issue-review-policy.d.ts +0 -4
- package/dist/services/issue-review-policy.d.ts.map +1 -1
- package/dist/services/issue-review-policy.js +7 -18
- package/dist/services/issue-review-policy.js.map +1 -1
- package/dist/services/issue-thread-interactions.d.ts +4 -24
- package/dist/services/issue-thread-interactions.d.ts.map +1 -1
- package/dist/services/issue-thread-interactions.js +145 -360
- package/dist/services/issue-thread-interactions.js.map +1 -1
- package/dist/services/issue-thread-interactions.test.js +11 -18
- package/dist/services/issue-thread-interactions.test.js.map +1 -1
- package/dist/services/issues.d.ts +0 -3
- package/dist/services/issues.d.ts.map +1 -1
- package/dist/services/issues.js +33 -157
- package/dist/services/issues.js.map +1 -1
- package/dist/services/local-service-supervisor.d.ts +0 -2
- package/dist/services/local-service-supervisor.d.ts.map +1 -1
- package/dist/services/local-service-supervisor.js +3 -53
- package/dist/services/local-service-supervisor.js.map +1 -1
- package/dist/services/managed-environments.d.ts +1 -4
- package/dist/services/managed-environments.d.ts.map +1 -1
- package/dist/services/managed-environments.js +2 -86
- package/dist/services/managed-environments.js.map +1 -1
- package/dist/services/managed-environments.test.js +0 -164
- package/dist/services/managed-environments.test.js.map +1 -1
- package/dist/services/plan-review-context.d.ts +1 -9
- package/dist/services/plan-review-context.d.ts.map +1 -1
- package/dist/services/plan-review-context.js +0 -192
- package/dist/services/plan-review-context.js.map +1 -1
- package/dist/services/plugin-environment-driver.d.ts +0 -46
- package/dist/services/plugin-environment-driver.d.ts.map +1 -1
- package/dist/services/plugin-environment-driver.js +0 -50
- package/dist/services/plugin-environment-driver.js.map +1 -1
- package/dist/services/plugin-host-services.d.ts +0 -1
- package/dist/services/plugin-host-services.d.ts.map +1 -1
- package/dist/services/plugin-host-services.js +28 -51
- package/dist/services/plugin-host-services.js.map +1 -1
- package/dist/services/plugin-loader.d.ts +1 -10
- package/dist/services/plugin-loader.d.ts.map +1 -1
- package/dist/services/plugin-loader.js +2 -43
- package/dist/services/plugin-loader.js.map +1 -1
- package/dist/services/plugin-worker-manager.d.ts +0 -61
- package/dist/services/plugin-worker-manager.d.ts.map +1 -1
- package/dist/services/plugin-worker-manager.js +1 -248
- package/dist/services/plugin-worker-manager.js.map +1 -1
- package/dist/services/productivity-review.d.ts.map +1 -1
- package/dist/services/productivity-review.js +0 -5
- package/dist/services/productivity-review.js.map +1 -1
- package/dist/services/recovery/service.d.ts.map +1 -1
- package/dist/services/recovery/service.js +1 -5
- package/dist/services/recovery/service.js.map +1 -1
- package/dist/services/recovery/successful-run-handoff.d.ts +1 -16
- package/dist/services/recovery/successful-run-handoff.d.ts.map +1 -1
- package/dist/services/recovery/successful-run-handoff.js +0 -32
- package/dist/services/recovery/successful-run-handoff.js.map +1 -1
- package/dist/services/recovery/successful-run-handoff.test.js +1 -51
- package/dist/services/recovery/successful-run-handoff.test.js.map +1 -1
- package/dist/services/routines.d.ts.map +1 -1
- package/dist/services/routines.js +4 -48
- package/dist/services/routines.js.map +1 -1
- package/dist/services/sandbox-provider-runtime.d.ts +0 -15
- package/dist/services/sandbox-provider-runtime.d.ts.map +1 -1
- package/dist/services/sandbox-provider-runtime.js +0 -1
- package/dist/services/sandbox-provider-runtime.js.map +1 -1
- package/dist/services/secrets.d.ts +0 -103
- package/dist/services/secrets.d.ts.map +1 -1
- package/dist/services/secrets.js +10 -432
- package/dist/services/secrets.js.map +1 -1
- package/dist/services/summary-slots.d.ts.map +1 -1
- package/dist/services/summary-slots.js +6 -40
- package/dist/services/summary-slots.js.map +1 -1
- package/dist/services/task-watchdogs.js +2 -2
- package/dist/services/task-watchdogs.js.map +1 -1
- package/dist/services/tool-access-policy.d.ts +1 -1
- package/dist/services/tool-access.d.ts.map +1 -1
- package/dist/services/tool-access.js +11 -29
- package/dist/services/tool-access.js.map +1 -1
- package/dist/services/tool-gateway.d.ts +1 -1
- package/dist/services/tool-gateway.d.ts.map +1 -1
- package/dist/services/tool-gateway.js +5 -56
- package/dist/services/tool-gateway.js.map +1 -1
- package/dist/services/workspace-file-resources.d.ts +1 -5
- package/dist/services/workspace-file-resources.d.ts.map +1 -1
- package/dist/services/workspace-file-resources.js +0 -233
- package/dist/services/workspace-file-resources.js.map +1 -1
- package/dist/services/workspace-operations.d.ts +0 -60
- package/dist/services/workspace-operations.d.ts.map +1 -1
- package/dist/services/workspace-operations.js +19 -384
- package/dist/services/workspace-operations.js.map +1 -1
- package/dist/services/workspace-runtime-read-model.d.ts +0 -12
- package/dist/services/workspace-runtime-read-model.d.ts.map +1 -1
- package/dist/services/workspace-runtime-read-model.test.js +0 -3
- package/dist/services/workspace-runtime-read-model.test.js.map +1 -1
- package/dist/services/workspace-runtime-ready-comment.test.js +0 -1
- package/dist/services/workspace-runtime-ready-comment.test.js.map +1 -1
- package/dist/services/workspace-runtime.d.ts +2 -160
- package/dist/services/workspace-runtime.d.ts.map +1 -1
- package/dist/services/workspace-runtime.js +138 -1656
- package/dist/services/workspace-runtime.js.map +1 -1
- package/dist/shutdown.d.ts +0 -24
- package/dist/shutdown.d.ts.map +1 -1
- package/dist/shutdown.js +0 -37
- package/dist/shutdown.js.map +1 -1
- package/dist/shutdown.test.js +1 -113
- package/dist/shutdown.test.js.map +1 -1
- package/dist/startup-banner.js +1 -1
- package/dist/startup-banner.js.map +1 -1
- package/dist/worktree-config.d.ts.map +1 -1
- package/dist/worktree-config.js +17 -3
- package/dist/worktree-config.js.map +1 -1
- package/package.json +20 -20
- package/skills/paperclip/SKILL.md +11 -16
- package/skills/paperclip/references/api-reference.md +5 -8
- package/skills/paperclip-board/SKILL.md +1 -1
- package/ui-dist/assets/{abnfDiagram-N423BO3Z-kdaaavXN.js → abnfDiagram-VRR7QNED-wvSnvD6-.js} +1 -1
- package/ui-dist/assets/{arc-Cd18ox-r.js → arc-Bx0V1JsN.js} +1 -1
- package/ui-dist/assets/architectureDiagram-ZJ3FMSHR-BcJt8Ia1.js +36 -0
- package/ui-dist/assets/{blockDiagram-VBNYF7ZC-C58bTAsZ.js → blockDiagram-677ZJIJ3-BROcLaUk.js} +1 -1
- package/ui-dist/assets/{c4Diagram-5PPSVZJV-B_KtB_EB.js → c4Diagram-LMCZKHZV-D-V3kgju.js} +1 -1
- package/ui-dist/assets/channel-ZRpjyNiZ.js +1 -0
- package/ui-dist/assets/{chunk-2Q5K7J3B-BmpBwmLP.js → chunk-2Q5K7J3B-D19cVnii.js} +1 -1
- package/ui-dist/assets/{chunk-2GRJ4B5K-qhRHwM8Y.js → chunk-32BRIVSS-qillH3H6.js} +1 -1
- package/ui-dist/assets/{chunk-5VM5RSS4-D6Tga9Mb.js → chunk-5VM5RSS4-Cwlp02Lx.js} +1 -1
- package/ui-dist/assets/{chunk-5RXB4S5H-CywQRTe5.js → chunk-EX3LRPZG-CLUswrZg.js} +1 -1
- package/ui-dist/assets/{chunk-JWPE2WC7-ZtWnwqln.js → chunk-JWPE2WC7-BjepyzEb.js} +1 -1
- package/ui-dist/assets/{chunk-6Q2QTUOP-0CsU7zKG.js → chunk-MOJQB5TN-yKciyq6E.js} +1 -1
- package/ui-dist/assets/{chunk-RYQCIY6F-DL2nCqGg.js → chunk-RYQCIY6F-ed7mQM9j.js} +1 -1
- package/ui-dist/assets/{chunk-GF5L2VYU-CPNUZr5Z.js → chunk-V7JOEXUC-DjJ75g0_.js} +1 -1
- package/ui-dist/assets/{chunk-KBJHAD2P-BglpLlt7.js → chunk-VR4S4FIN-CiEmy8-R.js} +1 -1
- package/ui-dist/assets/{chunk-XXDRQBXY-CbZaXCH1.js → chunk-XXDRQBXY-BiI83zoO.js} +1 -1
- package/ui-dist/assets/classDiagram-OUVF2IWQ-CCzzzCgk.js +1 -0
- package/ui-dist/assets/classDiagram-v2-EOCWNBFH-CCzzzCgk.js +1 -0
- package/ui-dist/assets/{cose-bilkent-JH36ORCC-g7-KyEFk.js → cose-bilkent-JH36ORCC-DIdQf5ta.js} +1 -1
- package/ui-dist/assets/{cynefin-VYW2F7L2-Ddyfknyn.js → cynefin-VYW2F7L2-B2m9xxh8.js} +1 -1
- package/ui-dist/assets/{cynefinDiagram-MW4NZA55-ybWs3Wtw.js → cynefinDiagram-TSTJHNR4-CGVdB0kX.js} +1 -1
- package/ui-dist/assets/cytoscape.esm-D8joxN9f.js +321 -0
- package/ui-dist/assets/{dagre-VZM6K2ZE-DVedg66G.js → dagre-VKFMJZFB-CskKiZwJ.js} +1 -1
- package/ui-dist/assets/{diagram-B4RE2ZJO-Uxn4QE1k.js → diagram-FQU43EPY-oa5Zu0XG.js} +1 -1
- package/ui-dist/assets/{diagram-Q27KOJAE-BFRHmYUR.js → diagram-G47NLZAW-BWF2ZCsw.js} +1 -1
- package/ui-dist/assets/{diagram-LBJQPF4R-Ky1WDHsF.js → diagram-NH7WQ7WH-fymti5Js.js} +1 -1
- package/ui-dist/assets/{diagram-7IWD3JNH-B3y_L0hG.js → diagram-OA4YK3LP-D2cn5eIN.js} +1 -1
- package/ui-dist/assets/diagram-WEI45ONY-M3WOC2tK.js +41 -0
- package/ui-dist/assets/{ebnfDiagram-BXEA7PRR-D1a0Rqvh.js → ebnfDiagram-CCIWWBDH-CJ1d3D5q.js} +1 -1
- package/ui-dist/assets/{erDiagram-JOGREHBK-BzAQkAlO.js → erDiagram-Q63AITRT-BJCPa7kK.js} +1 -1
- package/ui-dist/assets/{flowDiagram-UKHOOZJN-hvrW-gFq.js → flowDiagram-23GEKE2U-BWjWuz6r.js} +5 -5
- package/ui-dist/assets/{ganttDiagram-PKOTCBZU-nayknBOj.js → ganttDiagram-NO4QXBWP-Dv1KKjoM.js} +1 -1
- package/ui-dist/assets/{gitGraphDiagram-DS77QQ5N-kVm8tlTt.js → gitGraphDiagram-IHSO6WYX-9X7vgL0A.js} +1 -1
- package/ui-dist/assets/{index-DTRmOxIF.js → index-0yJtUsFh.js} +1 -1
- package/ui-dist/assets/{index-B_vImm_g.js → index-9JMDmXc5.js} +1 -1
- package/ui-dist/assets/{index-Bzq0zQGp.js → index-BTMiDMYv.js} +1 -1
- package/ui-dist/assets/{index-xUL-pLcX.js → index-BahRsj0s.js} +1 -1
- package/ui-dist/assets/{index-GApRWMfs.js → index-BexA3NAl.js} +1 -1
- package/ui-dist/assets/index-BqfqfoQX.css +1 -0
- package/ui-dist/assets/{index-CcljEelk.js → index-ByGcu-MB.js} +1 -1
- package/ui-dist/assets/{index-ClDlu8SX.js → index-C2a4_IKU.js} +1 -1
- package/ui-dist/assets/{index-BYJAA_gs.js → index-C5qHatpp.js} +1 -1
- package/ui-dist/assets/{index-yxu04f5O.js → index-C96LHV1A.js} +1 -1
- package/ui-dist/assets/{index-CI2nFrWG.js → index-Cfz6P0Qq.js} +1 -1
- package/ui-dist/assets/{index-EEYhQFqq.js → index-CjN2lm_w.js} +1 -1
- package/ui-dist/assets/{index-C6VVnr6a.js → index-CnBrDwGT.js} +223 -247
- package/ui-dist/assets/{index-BsJ74PWF.js → index-CpaK48ok.js} +1 -1
- package/ui-dist/assets/{index-K-yR0_iz.js → index-D2YCrA-D.js} +1 -1
- package/ui-dist/assets/{index-CAtSRe0E.js → index-D9d3sl6K.js} +1 -1
- package/ui-dist/assets/{index-DGp8Fwkd.js → index-DIXaXZrW.js} +1 -1
- package/ui-dist/assets/{index-VDideC_E.js → index-DKEzHO7c.js} +1 -1
- package/ui-dist/assets/{index-CACpGMZg.js → index-DKlsEDV7.js} +1 -1
- package/ui-dist/assets/{index-Ba3NVm1L.js → index-DcfO6NoY.js} +1 -1
- package/ui-dist/assets/{index-CBr05u1F.js → index-DuI6e5mP.js} +1 -1
- package/ui-dist/assets/{index-DiyJaeMJ.js → index-cUQXJtLK.js} +1 -1
- package/ui-dist/assets/{index-DKraBldB.js → index-pqJO8FsV.js} +1 -1
- package/ui-dist/assets/{index-ZhuZKD7A.js → index-rDI1Q4r9.js} +1 -1
- package/ui-dist/assets/{index-DK9VWhCv.js → index-tDuieU3u.js} +1 -1
- package/ui-dist/assets/{infoDiagram-6WML65LV-CEuNfv6U.js → infoDiagram-FWYZ7A6U-CHIhutSb.js} +1 -1
- package/ui-dist/assets/{ishikawaDiagram-WSZJBQD7-DEpSlkvS.js → ishikawaDiagram-FXEZZL3T-ChaD7-5_.js} +1 -1
- package/ui-dist/assets/{journeyDiagram-NVQOT4AX-CATgWMus.js → journeyDiagram-5HDEW3XC-M5T2sMgn.js} +1 -1
- package/ui-dist/assets/{kanban-definition-27J2QSJJ-Ce7s87OZ.js → kanban-definition-HUTT4EX6-B8H6R_Wc.js} +1 -1
- package/ui-dist/assets/{linear-BVMMVNi-.js → linear-cpPKlVCq.js} +1 -1
- package/ui-dist/assets/mermaid.core-MCazc_od.js +308 -0
- package/ui-dist/assets/{mindmap-definition-FAOFIHXS-rQds2Njn.js → mindmap-definition-LN4V7U3C-Bf6POzvm.js} +1 -1
- package/ui-dist/assets/{pegDiagram-VL7TDLO6-CLopYQkq.js → pegDiagram-2B236MQR-BJbGktAV.js} +1 -1
- package/ui-dist/assets/{pieDiagram-7S7Q4E2Y-C7TEyWBi.js → pieDiagram-ENE6RG2P-BmSN9Bio.js} +1 -1
- package/ui-dist/assets/{quadrantDiagram-CIZ2JOQS-3P1sRhyi.js → quadrantDiagram-ABIIQ3AL-JUpqQCx_.js} +1 -1
- package/ui-dist/assets/{railroadDiagram-AXF67PYL-S11hagYW.js → railroadDiagram-RFXS5EU6-B8k8T4-2.js} +1 -1
- package/ui-dist/assets/{requirementDiagram-LRYGKXZP-Dt0SvxPA.js → requirementDiagram-TGXJPOKE-b32heq7Q.js} +1 -1
- package/ui-dist/assets/{sankeyDiagram-W5VNT64P-D2TwJ0OV.js → sankeyDiagram-HTMAVEWB-DC3s-xgf.js} +1 -1
- package/ui-dist/assets/{sequenceDiagram-SI44F4Z6-B6pcnGbo.js → sequenceDiagram-DBY2YBRQ-BsCFyv_E.js} +1 -1
- package/ui-dist/assets/{sizeCapture-X5ZJPWSS-BwHHBcz4.js → sizeCapture-X5ZJPWSS-S7xeCud3.js} +1 -1
- package/ui-dist/assets/{stateDiagram-OKZ733FA-DeyWZ-1P.js → stateDiagram-2N3HPSRC-58O3ofoS.js} +1 -1
- package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-_VY5dpDG.js +1 -0
- package/ui-dist/assets/{swimlanes-SLNWSIFB-D_8zhPGT.js → swimlanes-5IMT3BWC-DFCVG0iF.js} +2 -2
- package/ui-dist/assets/swimlanesDiagram-G3AALYLV-BJhUjfns.js +8 -0
- package/ui-dist/assets/{timeline-definition-Z64GVDOM-ExLh8bsr.js → timeline-definition-FHXFAJF6-C0c0SkQu.js} +1 -1
- package/ui-dist/assets/{vennDiagram-T6HMQDX7-NhHU2XBa.js → vennDiagram-L72KCM5P-B1cEx8GQ.js} +1 -1
- package/ui-dist/assets/{wardleyDiagram-T6FBY63Y-Cpi3JH_6.js → wardleyDiagram-EHGQE667-BQhDkOx9.js} +1 -1
- package/ui-dist/assets/{xychartDiagram-ELKLHX3M-duq3uhjx.js → xychartDiagram-FW5EYKEG-YSQp1N0i.js} +4 -4
- package/ui-dist/index.html +3 -3
- package/ui-dist/sw.js +3 -8
- package/dist/lib/request-promise-memo.d.ts +0 -6
- package/dist/lib/request-promise-memo.d.ts.map +0 -1
- package/dist/lib/request-promise-memo.js +0 -25
- package/dist/lib/request-promise-memo.js.map +0 -1
- package/dist/lib/request-promise-memo.test.d.ts +0 -2
- package/dist/lib/request-promise-memo.test.d.ts.map +0 -1
- package/dist/lib/request-promise-memo.test.js +0 -74
- package/dist/lib/request-promise-memo.test.js.map +0 -1
- package/dist/middleware/private-json-etag.d.ts +0 -3
- package/dist/middleware/private-json-etag.d.ts.map +0 -1
- package/dist/middleware/private-json-etag.js +0 -37
- package/dist/middleware/private-json-etag.js.map +0 -1
- package/dist/routes/onboarding-seed.d.ts +0 -27
- package/dist/routes/onboarding-seed.d.ts.map +0 -1
- package/dist/routes/onboarding-seed.js +0 -56
- package/dist/routes/onboarding-seed.js.map +0 -1
- package/dist/routes/setup-token-route.test.d.ts +0 -2
- package/dist/routes/setup-token-route.test.d.ts.map +0 -1
- package/dist/routes/setup-token-route.test.js +0 -868
- package/dist/routes/setup-token-route.test.js.map +0 -1
- package/dist/services/attention-resolver-audience.test.d.ts +0 -2
- package/dist/services/attention-resolver-audience.test.d.ts.map +0 -1
- package/dist/services/attention-resolver-audience.test.js +0 -81
- package/dist/services/attention-resolver-audience.test.js.map +0 -1
- package/dist/services/board-auth.test.d.ts +0 -2
- package/dist/services/board-auth.test.d.ts.map +0 -1
- package/dist/services/board-auth.test.js +0 -34
- package/dist/services/board-auth.test.js.map +0 -1
- package/dist/services/codex-device-login-reaper.d.ts +0 -61
- package/dist/services/codex-device-login-reaper.d.ts.map +0 -1
- package/dist/services/codex-device-login-reaper.js +0 -219
- package/dist/services/codex-device-login-reaper.js.map +0 -1
- package/dist/services/codex-device-login-service.d.ts +0 -355
- package/dist/services/codex-device-login-service.d.ts.map +0 -1
- package/dist/services/codex-device-login-service.js +0 -775
- package/dist/services/codex-device-login-service.js.map +0 -1
- package/dist/services/company-import-transfers.d.ts +0 -55
- package/dist/services/company-import-transfers.d.ts.map +0 -1
- package/dist/services/company-import-transfers.js +0 -151
- package/dist/services/company-import-transfers.js.map +0 -1
- package/dist/services/company-transfer-runs.d.ts +0 -136
- package/dist/services/company-transfer-runs.d.ts.map +0 -1
- package/dist/services/company-transfer-runs.js +0 -243
- package/dist/services/company-transfer-runs.js.map +0 -1
- package/dist/services/issue-thread-interaction-resolution.d.ts +0 -92
- package/dist/services/issue-thread-interaction-resolution.d.ts.map +0 -1
- package/dist/services/issue-thread-interaction-resolution.js +0 -198
- package/dist/services/issue-thread-interaction-resolution.js.map +0 -1
- package/dist/services/issue-thread-interaction-resolution.test.d.ts +0 -2
- package/dist/services/issue-thread-interaction-resolution.test.d.ts.map +0 -1
- package/dist/services/issue-thread-interaction-resolution.test.js +0 -152
- package/dist/services/issue-thread-interaction-resolution.test.js.map +0 -1
- package/dist/services/onboarding-greeting.d.ts +0 -7
- package/dist/services/onboarding-greeting.d.ts.map +0 -1
- package/dist/services/onboarding-greeting.js +0 -27
- package/dist/services/onboarding-greeting.js.map +0 -1
- package/dist/services/onboarding-greeting.test.d.ts +0 -2
- package/dist/services/onboarding-greeting.test.d.ts.map +0 -1
- package/dist/services/onboarding-greeting.test.js +0 -32
- package/dist/services/onboarding-greeting.test.js.map +0 -1
- package/dist/services/onboarding-seed.d.ts +0 -57
- package/dist/services/onboarding-seed.d.ts.map +0 -1
- package/dist/services/onboarding-seed.js +0 -344
- package/dist/services/onboarding-seed.js.map +0 -1
- package/dist/services/runtime-exposure/broker-client.d.ts +0 -88
- package/dist/services/runtime-exposure/broker-client.d.ts.map +0 -1
- package/dist/services/runtime-exposure/broker-client.js +0 -217
- package/dist/services/runtime-exposure/broker-client.js.map +0 -1
- package/dist/services/runtime-exposure/broker-client.test.d.ts +0 -2
- package/dist/services/runtime-exposure/broker-client.test.d.ts.map +0 -1
- package/dist/services/runtime-exposure/broker-client.test.js +0 -185
- package/dist/services/runtime-exposure/broker-client.test.js.map +0 -1
- package/dist/services/runtime-exposure/exposure-manager.d.ts +0 -135
- package/dist/services/runtime-exposure/exposure-manager.d.ts.map +0 -1
- package/dist/services/runtime-exposure/exposure-manager.js +0 -247
- package/dist/services/runtime-exposure/exposure-manager.js.map +0 -1
- package/dist/services/runtime-exposure/exposure-manager.test.d.ts +0 -2
- package/dist/services/runtime-exposure/exposure-manager.test.d.ts.map +0 -1
- package/dist/services/runtime-exposure/exposure-manager.test.js +0 -384
- package/dist/services/runtime-exposure/exposure-manager.test.js.map +0 -1
- package/dist/services/runtime-exposure/loopback-listener.d.ts +0 -33
- package/dist/services/runtime-exposure/loopback-listener.d.ts.map +0 -1
- package/dist/services/runtime-exposure/loopback-listener.js +0 -146
- package/dist/services/runtime-exposure/loopback-listener.js.map +0 -1
- package/dist/services/runtime-exposure/loopback-listener.test.d.ts +0 -2
- package/dist/services/runtime-exposure/loopback-listener.test.d.ts.map +0 -1
- package/dist/services/runtime-exposure/loopback-listener.test.js +0 -116
- package/dist/services/runtime-exposure/loopback-listener.test.js.map +0 -1
- package/dist/services/runtime-exposure/port-pair.d.ts +0 -47
- package/dist/services/runtime-exposure/port-pair.d.ts.map +0 -1
- package/dist/services/runtime-exposure/port-pair.js +0 -57
- package/dist/services/runtime-exposure/port-pair.js.map +0 -1
- package/dist/services/runtime-exposure/port-pair.test.d.ts +0 -2
- package/dist/services/runtime-exposure/port-pair.test.d.ts.map +0 -1
- package/dist/services/runtime-exposure/port-pair.test.js +0 -92
- package/dist/services/runtime-exposure/port-pair.test.js.map +0 -1
- package/dist/services/runtime-exposure/port-reservation.d.ts +0 -211
- package/dist/services/runtime-exposure/port-reservation.d.ts.map +0 -1
- package/dist/services/runtime-exposure/port-reservation.js +0 -380
- package/dist/services/runtime-exposure/port-reservation.js.map +0 -1
- package/dist/services/runtime-exposure/port-reservation.test.d.ts +0 -2
- package/dist/services/runtime-exposure/port-reservation.test.d.ts.map +0 -1
- package/dist/services/runtime-exposure/port-reservation.test.js +0 -456
- package/dist/services/runtime-exposure/port-reservation.test.js.map +0 -1
- package/dist/services/runtime-exposure/tailscale-hostname.d.ts +0 -11
- package/dist/services/runtime-exposure/tailscale-hostname.d.ts.map +0 -1
- package/dist/services/runtime-exposure/tailscale-hostname.js +0 -36
- package/dist/services/runtime-exposure/tailscale-hostname.js.map +0 -1
- package/dist/services/runtime-exposure/tailscale-hostname.test.d.ts +0 -2
- package/dist/services/runtime-exposure/tailscale-hostname.test.d.ts.map +0 -1
- package/dist/services/runtime-exposure/tailscale-hostname.test.js +0 -14
- package/dist/services/runtime-exposure/tailscale-hostname.test.js.map +0 -1
- package/dist/services/sandbox-orphan-cleanup-spool.d.ts +0 -64
- package/dist/services/sandbox-orphan-cleanup-spool.d.ts.map +0 -1
- package/dist/services/sandbox-orphan-cleanup-spool.js +0 -134
- package/dist/services/sandbox-orphan-cleanup-spool.js.map +0 -1
- package/dist/services/setup-token-session.d.ts +0 -612
- package/dist/services/setup-token-session.d.ts.map +0 -1
- package/dist/services/setup-token-session.js +0 -986
- package/dist/services/setup-token-session.js.map +0 -1
- package/dist/services/setup-token-session.test.d.ts +0 -2
- package/dist/services/setup-token-session.test.d.ts.map +0 -1
- package/dist/services/setup-token-session.test.js +0 -1100
- package/dist/services/setup-token-session.test.js.map +0 -1
- package/dist/services/setup-token-transport-binding.d.ts +0 -202
- package/dist/services/setup-token-transport-binding.d.ts.map +0 -1
- package/dist/services/setup-token-transport-binding.js +0 -386
- package/dist/services/setup-token-transport-binding.js.map +0 -1
- package/dist/services/setup-token-transport-binding.test.d.ts +0 -2
- package/dist/services/setup-token-transport-binding.test.d.ts.map +0 -1
- package/dist/services/setup-token-transport-binding.test.js +0 -761
- package/dist/services/setup-token-transport-binding.test.js.map +0 -1
- package/dist/services/workspace-runtime-exposure-backfill.test.d.ts +0 -2
- package/dist/services/workspace-runtime-exposure-backfill.test.d.ts.map +0 -1
- package/dist/services/workspace-runtime-exposure-backfill.test.js +0 -149
- package/dist/services/workspace-runtime-exposure-backfill.test.js.map +0 -1
- package/dist/services/workspace-runtime-exposure.test.d.ts +0 -2
- package/dist/services/workspace-runtime-exposure.test.d.ts.map +0 -1
- package/dist/services/workspace-runtime-exposure.test.js +0 -517
- package/dist/services/workspace-runtime-exposure.test.js.map +0 -1
- package/dist/services/workspace-runtime-leases.d.ts +0 -90
- package/dist/services/workspace-runtime-leases.d.ts.map +0 -1
- package/dist/services/workspace-runtime-leases.js +0 -252
- package/dist/services/workspace-runtime-leases.js.map +0 -1
- package/dist/url-utils.d.ts +0 -26
- package/dist/url-utils.d.ts.map +0 -1
- package/dist/url-utils.js +0 -59
- package/dist/url-utils.js.map +0 -1
- package/dist/url-utils.test.d.ts +0 -2
- package/dist/url-utils.test.d.ts.map +0 -1
- package/dist/url-utils.test.js +0 -55
- package/dist/url-utils.test.js.map +0 -1
- package/ui-dist/assets/architectureDiagram-T3A2C74G-DtzDe418.js +0 -36
- package/ui-dist/assets/channel-CO5Hj_lo.js +0 -1
- package/ui-dist/assets/classDiagram-JCYQIIEL-B9WLXtNO.js +0 -1
- package/ui-dist/assets/classDiagram-v2-OCEON4UE-B9WLXtNO.js +0 -1
- package/ui-dist/assets/cytoscape.esm-DShqj__B.js +0 -321
- package/ui-dist/assets/diagram-UB23O5K3-C5Jb7jit.js +0 -41
- package/ui-dist/assets/index-BHiUiToL.css +0 -1
- package/ui-dist/assets/mermaid.core-Bd443bNG.js +0 -308
- package/ui-dist/assets/stateDiagram-v2-UEYNNEHI-DHYkVMlW.js +0 -1
- package/ui-dist/assets/swimlanesDiagram-ULZ7WXOC-DH1A2oGJ.js +0 -8
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const hermesGatewayAgentConfigurationDoc = "# hermes_gateway agent configuration\n\nAdapter: hermes_gateway\n\nUse when:\n- Hermes is already running outside Paperclip and exposes its API server.\n- Paperclip should invoke Hermes through the gateway HTTP API instead of spawning Hermes locally.\n- The Hermes runtime may live on another host, a private overlay, in Docker, or behind a TLS reverse proxy.\n\nDon't use when:\n- Paperclip should start the Hermes CLI directly on the same host. Use the built-in hermes_local adapter for that flow.\n- Hermes is the process calling Paperclip APIs after claiming its key. That is Hermes-originated Paperclip API usage, not the gateway adapter transport.\n\nRuntime distinction:\n- hermes_local: Paperclip starts Hermes on the Paperclip host through the built-in local adapter.\n- hermes_gateway: Paperclip calls an already-running Hermes API server using agentDefaultsPayload.apiBaseUrl.\n- Hermes-originated Paperclip API usage: Hermes calls Paperclip with PAPERCLIP_API_URL and the Paperclip API key claimed through the standard join approval flow. Do not use agentDefaultsPayload.apiBaseUrl for Paperclip API calls. For internet-facing Hermes chat/webhook task bridges, use a separate task_bridge key instead of exposing the normal claimed agent key.\n\nHermes gateway process setup:\n- Set API_SERVER_ENABLED=true.\n- Set API_SERVER_KEY to a generated secret value. Do not paste a real key into tickets, docs, screenshots, or tests.\n- Start Hermes with: hermes gateway run --replace --accept-hooks\n- Default Hermes API server port: 8642.\n- Default Hermes dashboard port: 9119. If Paperclip is configured with a default dashboard root or chat URL such as http://127.0.0.1:9119 or http://127.0.0.1:9119/chat, it maps the base URL to /api automatically.\n- Watch out: /chat and the dashboard root are browser UI routes. Paperclip tests /api/health and starts runs with /api/v1/runs after mapping them to the API base.\n\nJoin request minimum:\n{\n \"requestType\": \"agent\",\n \"agentName\": \"My Hermes Gateway Agent\",\n \"adapterType\": \"hermes_gateway\",\n \"capabilities\": \"Hermes gateway agent\",\n \"agentDefaultsPayload\": {\n \"apiBaseUrl\": \"http://127.0.0.1:8642\",\n \"apiKey\": \"<same-value-as-API_SERVER_KEY>\",\n \"paperclipApiUrl\": \"http://localhost:3100\"\n }\n}\n\nCore fields:\n- agentDefaultsPayload.apiBaseUrl (string, required): Base URL for the Hermes API server as reachable from the Paperclip server. A default dashboard root or chat URL such as http://127.0.0.1:9119 or http://127.0.0.1:9119/chat is accepted and maps to http://127.0.0.1:9119/api.\n- agentDefaultsPayload.apiKey (string, required unless the adapter package documents another auth field): Hermes API server key matching API_SERVER_KEY. This is the Hermes gateway key, not the claimed Paperclip API key.\n- agentDefaultsPayload.paperclipApiUrl (string, strongly recommended): Paperclip base URL as reachable from Hermes for invite, claim, skill bootstrap, and later Paperclip API calls.\n- agentDefaultsPayload.timeoutSec or timeoutMs (number, optional): Runtime request timeout when supported by the installed Hermes gateway adapter.\n\nNetwork examples:\n- Local loopback on one host: agentDefaultsPayload.apiBaseUrl = \"http://127.0.0.1:8642\"; agentDefaultsPayload.paperclipApiUrl = \"http://127.0.0.1:3100\".\n- Local dashboard root or chat URL on one host: agentDefaultsPayload.apiBaseUrl = \"http://127.0.0.1:9119\" or \"http://127.0.0.1:9119/chat\"; Paperclip maps it to \"http://127.0.0.1:9119/api\".\n- LAN/private network: agentDefaultsPayload.apiBaseUrl = \"http://192.168.1.25:8642\"; agentDefaultsPayload.paperclipApiUrl = \"http://192.168.1.10:3100\". Use private IPs or hostnames reachable from both machines.\n- Private overlay: agentDefaultsPayload.apiBaseUrl = \"http://hermes-host.tailnet-name.ts.net:8642\"; agentDefaultsPayload.paperclipApiUrl = \"http://paperclip-host.tailnet-name.ts.net:3100\". Add the Paperclip hostname with
|
|
1
|
+
export declare const hermesGatewayAgentConfigurationDoc = "# hermes_gateway agent configuration\n\nAdapter: hermes_gateway\n\nUse when:\n- Hermes is already running outside Paperclip and exposes its API server.\n- Paperclip should invoke Hermes through the gateway HTTP API instead of spawning Hermes locally.\n- The Hermes runtime may live on another host, a private overlay, in Docker, or behind a TLS reverse proxy.\n\nDon't use when:\n- Paperclip should start the Hermes CLI directly on the same host. Use the built-in hermes_local adapter for that flow.\n- Hermes is the process calling Paperclip APIs after claiming its key. That is Hermes-originated Paperclip API usage, not the gateway adapter transport.\n\nRuntime distinction:\n- hermes_local: Paperclip starts Hermes on the Paperclip host through the built-in local adapter.\n- hermes_gateway: Paperclip calls an already-running Hermes API server using agentDefaultsPayload.apiBaseUrl.\n- Hermes-originated Paperclip API usage: Hermes calls Paperclip with PAPERCLIP_API_URL and the Paperclip API key claimed through the standard join approval flow. Do not use agentDefaultsPayload.apiBaseUrl for Paperclip API calls. For internet-facing Hermes chat/webhook task bridges, use a separate task_bridge key instead of exposing the normal claimed agent key.\n\nHermes gateway process setup:\n- Set API_SERVER_ENABLED=true.\n- Set API_SERVER_KEY to a generated secret value. Do not paste a real key into tickets, docs, screenshots, or tests.\n- Start Hermes with: hermes gateway run --replace --accept-hooks\n- Default Hermes API server port: 8642.\n- Default Hermes dashboard port: 9119. If Paperclip is configured with a default dashboard root or chat URL such as http://127.0.0.1:9119 or http://127.0.0.1:9119/chat, it maps the base URL to /api automatically.\n- Watch out: /chat and the dashboard root are browser UI routes. Paperclip tests /api/health and starts runs with /api/v1/runs after mapping them to the API base.\n\nJoin request minimum:\n{\n \"requestType\": \"agent\",\n \"agentName\": \"My Hermes Gateway Agent\",\n \"adapterType\": \"hermes_gateway\",\n \"capabilities\": \"Hermes gateway agent\",\n \"agentDefaultsPayload\": {\n \"apiBaseUrl\": \"http://127.0.0.1:8642\",\n \"apiKey\": \"<same-value-as-API_SERVER_KEY>\",\n \"paperclipApiUrl\": \"http://localhost:3100\"\n }\n}\n\nCore fields:\n- agentDefaultsPayload.apiBaseUrl (string, required): Base URL for the Hermes API server as reachable from the Paperclip server. A default dashboard root or chat URL such as http://127.0.0.1:9119 or http://127.0.0.1:9119/chat is accepted and maps to http://127.0.0.1:9119/api.\n- agentDefaultsPayload.apiKey (string, required unless the adapter package documents another auth field): Hermes API server key matching API_SERVER_KEY. This is the Hermes gateway key, not the claimed Paperclip API key.\n- agentDefaultsPayload.paperclipApiUrl (string, strongly recommended): Paperclip base URL as reachable from Hermes for invite, claim, skill bootstrap, and later Paperclip API calls.\n- agentDefaultsPayload.timeoutSec or timeoutMs (number, optional): Runtime request timeout when supported by the installed Hermes gateway adapter.\n\nNetwork examples:\n- Local loopback on one host: agentDefaultsPayload.apiBaseUrl = \"http://127.0.0.1:8642\"; agentDefaultsPayload.paperclipApiUrl = \"http://127.0.0.1:3100\".\n- Local dashboard root or chat URL on one host: agentDefaultsPayload.apiBaseUrl = \"http://127.0.0.1:9119\" or \"http://127.0.0.1:9119/chat\"; Paperclip maps it to \"http://127.0.0.1:9119/api\".\n- LAN/private network: agentDefaultsPayload.apiBaseUrl = \"http://192.168.1.25:8642\"; agentDefaultsPayload.paperclipApiUrl = \"http://192.168.1.10:3100\". Use private IPs or hostnames reachable from both machines.\n- Private overlay: agentDefaultsPayload.apiBaseUrl = \"http://hermes-host.tailnet-name.ts.net:8642\"; agentDefaultsPayload.paperclipApiUrl = \"http://paperclip-host.tailnet-name.ts.net:3100\". Add the Paperclip hostname with pnpm paperclipai allowed-hostname <host> when authenticated/private mode requires it.\n- Docker: if Hermes runs on the host and Paperclip runs in Docker, use agentDefaultsPayload.apiBaseUrl = \"http://host.docker.internal:8642\". If Hermes runs in another container, use the Compose service DNS name such as \"http://hermes:8642\".\n- Reverse proxy/TLS: publish Hermes behind HTTPS and set agentDefaultsPayload.apiBaseUrl = \"https://hermes-gateway.example\"; set agentDefaultsPayload.paperclipApiUrl = \"https://paperclip.example\". Keep API_SERVER_KEY required at the origin or proxy.\n\nSecurity notes:\n- Treat API_SERVER_KEY and PAPERCLIP_BRIDGE_API_KEY as secrets.\n- When claiming the normal Paperclip agent API key, store the parsed token field from the raw claim response before printing or summarizing it. Hermes/tool displays may redact secrets with literal ... or [redacted]; those previews are not valid keys.\n- Never use a normal claimed Paperclip agent API key for internet-facing Hermes-originated task bridge calls; task_bridge keys cannot use company-wide issue list/search/read surfaces and can only mutate bridge-created or assigned issues.\n- Prefer private network or TLS for non-loopback gateway access.\n- Use placeholders such as <same-value-as-API_SERVER_KEY> in docs and tests.\n";
|
|
2
2
|
//# sourceMappingURL=hermes-gateway-doc.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hermes-gateway-doc.d.ts","sourceRoot":"","sources":["../../src/adapters/hermes-gateway-doc.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kCAAkC,
|
|
1
|
+
{"version":3,"file":"hermes-gateway-doc.d.ts","sourceRoot":"","sources":["../../src/adapters/hermes-gateway-doc.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kCAAkC,kqKA2D9C,CAAC"}
|
|
@@ -47,7 +47,7 @@ Network examples:
|
|
|
47
47
|
- Local loopback on one host: agentDefaultsPayload.apiBaseUrl = "http://127.0.0.1:8642"; agentDefaultsPayload.paperclipApiUrl = "http://127.0.0.1:3100".
|
|
48
48
|
- Local dashboard root or chat URL on one host: agentDefaultsPayload.apiBaseUrl = "http://127.0.0.1:9119" or "http://127.0.0.1:9119/chat"; Paperclip maps it to "http://127.0.0.1:9119/api".
|
|
49
49
|
- LAN/private network: agentDefaultsPayload.apiBaseUrl = "http://192.168.1.25:8642"; agentDefaultsPayload.paperclipApiUrl = "http://192.168.1.10:3100". Use private IPs or hostnames reachable from both machines.
|
|
50
|
-
- Private overlay: agentDefaultsPayload.apiBaseUrl = "http://hermes-host.tailnet-name.ts.net:8642"; agentDefaultsPayload.paperclipApiUrl = "http://paperclip-host.tailnet-name.ts.net:3100". Add the Paperclip hostname with
|
|
50
|
+
- Private overlay: agentDefaultsPayload.apiBaseUrl = "http://hermes-host.tailnet-name.ts.net:8642"; agentDefaultsPayload.paperclipApiUrl = "http://paperclip-host.tailnet-name.ts.net:3100". Add the Paperclip hostname with pnpm paperclipai allowed-hostname <host> when authenticated/private mode requires it.
|
|
51
51
|
- Docker: if Hermes runs on the host and Paperclip runs in Docker, use agentDefaultsPayload.apiBaseUrl = "http://host.docker.internal:8642". If Hermes runs in another container, use the Compose service DNS name such as "http://hermes:8642".
|
|
52
52
|
- Reverse proxy/TLS: publish Hermes behind HTTPS and set agentDefaultsPayload.apiBaseUrl = "https://hermes-gateway.example"; set agentDefaultsPayload.paperclipApiUrl = "https://paperclip.example". Keep API_SERVER_KEY required at the origin or proxy.
|
|
53
53
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-loader.d.ts","sourceRoot":"","sources":["../../src/adapters/plugin-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"plugin-loader.d.ts","sourceRoot":"","sources":["../../src/adapters/plugin-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAgBtD,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEzE;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiBlF;AA+GD,wBAAsB,0BAA0B,CAC9C,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,mBAAmB,CAAC,CAmB9B;AAcD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CA6CrC;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAmB5E"}
|
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import fs from "node:fs";
|
|
12
12
|
import path from "node:path";
|
|
13
|
-
import { pathToFileURL } from "node:url";
|
|
14
13
|
import { logger } from "../middleware/logger.js";
|
|
15
14
|
import { listAdapterPlugins, getAdapterPluginsDir, getAdapterPluginByType, } from "../services/adapter-plugin-store.js";
|
|
16
15
|
// ---------------------------------------------------------------------------
|
|
@@ -123,7 +122,7 @@ export async function loadExternalAdapterPackage(packageName, localPath) {
|
|
|
123
122
|
const modulePath = path.resolve(packageDir, entryPoint);
|
|
124
123
|
const uiParserSource = extractUiParserSource(packageDir, packageName);
|
|
125
124
|
logger.info({ packageName, packageDir, entryPoint, modulePath, hasUiParser: !!uiParserSource }, "Loading external adapter package");
|
|
126
|
-
const mod = await import(
|
|
125
|
+
const mod = await import(modulePath);
|
|
127
126
|
const adapterModule = validateAdapterModule(mod, packageName);
|
|
128
127
|
if (uiParserSource) {
|
|
129
128
|
uiParserCache.set(adapterModule.type, uiParserSource);
|
|
@@ -150,7 +149,7 @@ export async function reloadExternalAdapter(type) {
|
|
|
150
149
|
const packageDir = resolvePackageDir(record);
|
|
151
150
|
const entryPoint = resolvePackageEntryPoint(packageDir);
|
|
152
151
|
const modulePath = path.resolve(packageDir, entryPoint);
|
|
153
|
-
const fileUrl =
|
|
152
|
+
const fileUrl = `file://${modulePath}`;
|
|
154
153
|
// Bust ESM module cache so re-import loads fresh code from disk.
|
|
155
154
|
// Query-string trick (?t=...) works in Node; Bun may need the file:// URL
|
|
156
155
|
// to be evicted from its internal registry first.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-loader.js","sourceRoot":"","sources":["../../src/adapters/plugin-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-loader.js","sourceRoot":"","sources":["../../src/adapters/plugin-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-auth-jwt.d.ts","sourceRoot":"","sources":["../src/agent-auth-jwt.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAQvF,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,SAAS,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;
|
|
1
|
+
{"version":3,"file":"agent-auth-jwt.d.ts","sourceRoot":"","sources":["../src/agent-auth-jwt.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAQvF,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,SAAS,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA6FD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,EACjC,QAAQ,GAAE,gBAAuC,iBAiClD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CA4F7E"}
|
package/dist/agent-auth-jwt.js
CHANGED
|
@@ -20,13 +20,7 @@ function jwtConfig() {
|
|
|
20
20
|
return null;
|
|
21
21
|
return {
|
|
22
22
|
secret,
|
|
23
|
-
|
|
24
|
-
// and the agent-authentication design doc. Run tokens are minted once at
|
|
25
|
-
// adapter spawn and injected as env, so the TTL must cover the entire run —
|
|
26
|
-
// including host-suspension gaps: heartbeats scheduled while a laptop lid is
|
|
27
|
-
// closed fire during ~2s dark wakes, and the spawned session can then sit
|
|
28
|
-
// frozen for over an hour before it first executes.
|
|
29
|
-
ttlSeconds: parseNumber(process.env.PAPERCLIP_AGENT_JWT_TTL_SECONDS, 60 * 60 * 48),
|
|
23
|
+
ttlSeconds: parseNumber(process.env.PAPERCLIP_AGENT_JWT_TTL_SECONDS, 60 * 60),
|
|
30
24
|
issuer: process.env.PAPERCLIP_AGENT_JWT_ISSUER ?? "paperclip",
|
|
31
25
|
audience: process.env.PAPERCLIP_AGENT_JWT_AUDIENCE ?? "paperclip-api",
|
|
32
26
|
// The control-plane instance this process belongs to. The live plane runs as
|
|
@@ -152,7 +146,7 @@ export function verifyLocalAgentJwt(token) {
|
|
|
152
146
|
// bounds the legacy window naturally).
|
|
153
147
|
//
|
|
154
148
|
// Operators should set `PAPERCLIP_AGENT_JWT_DISABLE_LEGACY_FALLBACK=true`
|
|
155
|
-
// approximately one JWT TTL (~
|
|
149
|
+
// approximately one JWT TTL (~1h by default, see PAPERCLIP_AGENT_JWT_TTL_SECONDS)
|
|
156
150
|
// after deploying per-company signing. Once set, the master-secret fallback
|
|
157
151
|
// is disabled and only tokens validating under the per-instance/per-company
|
|
158
152
|
// derived key are accepted — closing the window in which a leaked master
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-auth-jwt.js","sourceRoot":"","sources":["../src/agent-auth-jwt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAyB,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAsB7D,MAAM,aAAa,GAAG,OAAO,CAAC;AAE9B,SAAS,WAAW,CAAC,KAAyB,EAAE,QAAgB;IAC9D,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB;IAChD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,OAAO,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,IAAI,CAAC;AACpG,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;IACxG,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,OAAO;QACL,MAAM;QACN,
|
|
1
|
+
{"version":3,"file":"agent-auth-jwt.js","sourceRoot":"","sources":["../src/agent-auth-jwt.ts"],"names":[],"mappings":"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"}
|
package/dist/app.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import express, { type Request as ExpressRequest } from "express";
|
|
2
|
-
import { type Server as HttpServer } from "node:http";
|
|
3
2
|
import type { Db } from "@paperclipai/db";
|
|
4
|
-
import {
|
|
3
|
+
import type { DeploymentExposure, DeploymentMode } from "@paperclipai/shared";
|
|
5
4
|
import type { InspectDatabaseBackupHealthOptions } from "./services/database-backup-health.js";
|
|
6
5
|
import type { StorageService } from "./storage/types.js";
|
|
7
6
|
import type { DecisionServiceOptions } from "./services/decisions.js";
|
|
@@ -13,8 +12,6 @@ type UiMode = "none" | "static" | "vite-dev";
|
|
|
13
12
|
export declare function isDatabaseConnectionUnavailableError(err: unknown): boolean;
|
|
14
13
|
export declare function resolveViteHmrPort(serverPort: number): number;
|
|
15
14
|
export declare function resolveViteHmrHost(bindHost: string): string | undefined;
|
|
16
|
-
export declare function resolveViteHmrProtocol(value: string | undefined): "ws" | "wss" | undefined;
|
|
17
|
-
export declare function listenViteHmrServer(server: HttpServer, port: number, bindHost: string): Promise<void>;
|
|
18
15
|
export declare function shouldServeViteDevHtml(req: ExpressRequest): boolean;
|
|
19
16
|
export declare function shouldEnablePrivateHostnameGuard(opts: {
|
|
20
17
|
deploymentMode: DeploymentMode;
|
|
@@ -46,7 +43,6 @@ export declare function createApp(db: Db, opts: {
|
|
|
46
43
|
deploymentExposure: DeploymentExposure;
|
|
47
44
|
allowedHostnames: string[];
|
|
48
45
|
bindHost: string;
|
|
49
|
-
authPublicBaseUrl?: string;
|
|
50
46
|
authReady: boolean;
|
|
51
47
|
companyDeletionEnabled: boolean;
|
|
52
48
|
instanceId?: string;
|
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAAU,KAAK,OAAO,IAAI,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/app.js
CHANGED
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
import express, { Router } from "express";
|
|
2
|
-
import { createServer as createHttpServer } from "node:http";
|
|
3
2
|
import path from "node:path";
|
|
4
3
|
import fs from "node:fs";
|
|
5
4
|
import { fileURLToPath } from "node:url";
|
|
6
|
-
import { derivePaperclipViteHmrPort } from "@paperclipai/shared";
|
|
7
5
|
import { httpLogger, errorHandler } from "./middleware/index.js";
|
|
8
6
|
import { actorMiddleware } from "./middleware/auth.js";
|
|
9
7
|
import { boardMutationGuard } from "./middleware/board-mutation-guard.js";
|
|
10
8
|
import { privateHostnameGuard, resolvePrivateHostnameAllowSet } from "./middleware/private-hostname-guard.js";
|
|
11
9
|
import { applyTrustProxy, parseTrustProxyEnv } from "./middleware/trust-proxy.js";
|
|
12
|
-
import { IMPORT_TRANSFER_SPOOL_SWEEP_INTERVAL_MS, resolveDefaultImportTransferSpoolRoot, sweepAbandonedImportTransferSpools, } from "./services/company-import-transfers.js";
|
|
13
|
-
import { companyTransferRunService } from "./services/company-transfer-runs.js";
|
|
14
10
|
import { healthRoutes } from "./routes/health.js";
|
|
15
11
|
import { cloudRoutes } from "./routes/cloud.js";
|
|
16
12
|
import { companyRoutes } from "./routes/companies.js";
|
|
@@ -23,9 +19,6 @@ import { summarySlotRoutes } from "./routes/summary-slots.js";
|
|
|
23
19
|
import { statusCardRoutes } from "./routes/status-cards.js";
|
|
24
20
|
import { teamsCatalogRoutes } from "./routes/teams-catalog.js";
|
|
25
21
|
import { agentRoutes } from "./routes/agents.js";
|
|
26
|
-
import { buildSetupTokenLoginTransport, createProductionSetupTokenSandboxProvider, createProductionSetupTokenCleanupStore, createSetupTokenSecretWriter, createWorkerBoundSetupTokenPtyOpener, } from "./services/setup-token-transport-binding.js";
|
|
27
|
-
import { environmentService } from "./services/environments.js";
|
|
28
|
-
import { environmentRuntimeService } from "./services/environment-runtime.js";
|
|
29
22
|
import { projectRoutes } from "./routes/projects.js";
|
|
30
23
|
import { issueRoutes } from "./routes/issues.js";
|
|
31
24
|
import { issueTreeControlRoutes } from "./routes/issue-tree-control.js";
|
|
@@ -36,7 +29,6 @@ import { pipelineRoutes } from "./routes/pipelines.js";
|
|
|
36
29
|
import { environmentRoutes } from "./routes/environments.js";
|
|
37
30
|
import { executionWorkspaceRoutes } from "./routes/execution-workspaces.js";
|
|
38
31
|
import { goalRoutes } from "./routes/goals.js";
|
|
39
|
-
import { onboardingSeedRoutes } from "./routes/onboarding-seed.js";
|
|
40
32
|
import { boardChatRoutes } from "./routes/board-chat.js";
|
|
41
33
|
import { approvalRoutes } from "./routes/approvals.js";
|
|
42
34
|
import { secretRoutes } from "./routes/secrets.js";
|
|
@@ -114,40 +106,17 @@ export function isDatabaseConnectionUnavailableError(err) {
|
|
|
114
106
|
return Boolean(error?.cause && isDatabaseConnectionUnavailableError(error.cause));
|
|
115
107
|
}
|
|
116
108
|
export function resolveViteHmrPort(serverPort) {
|
|
117
|
-
|
|
109
|
+
if (serverPort <= 55_535) {
|
|
110
|
+
return serverPort + 10_000;
|
|
111
|
+
}
|
|
112
|
+
return Math.max(1_024, serverPort - 10_000);
|
|
118
113
|
}
|
|
119
114
|
export function resolveViteHmrHost(bindHost) {
|
|
120
115
|
const normalized = bindHost.trim().toLowerCase();
|
|
121
|
-
if (normalized === "0.0.0.0"
|
|
122
|
-
|| normalized === "::"
|
|
123
|
-
|| normalized === "127.0.0.1"
|
|
124
|
-
|| normalized === "::1"
|
|
125
|
-
|| normalized === "localhost")
|
|
116
|
+
if (normalized === "0.0.0.0" || normalized === "::")
|
|
126
117
|
return undefined;
|
|
127
118
|
return bindHost;
|
|
128
119
|
}
|
|
129
|
-
export function resolveViteHmrProtocol(value) {
|
|
130
|
-
if (!value)
|
|
131
|
-
return undefined;
|
|
132
|
-
if (value === "ws" || value === "wss")
|
|
133
|
-
return value;
|
|
134
|
-
throw new Error("PAPERCLIP_VITE_HMR_PROTOCOL must be ws or wss");
|
|
135
|
-
}
|
|
136
|
-
export function listenViteHmrServer(server, port, bindHost) {
|
|
137
|
-
return new Promise((resolve, reject) => {
|
|
138
|
-
const onError = (error) => {
|
|
139
|
-
server.off("listening", onListening);
|
|
140
|
-
reject(error);
|
|
141
|
-
};
|
|
142
|
-
const onListening = () => {
|
|
143
|
-
server.off("error", onError);
|
|
144
|
-
resolve();
|
|
145
|
-
};
|
|
146
|
-
server.once("error", onError);
|
|
147
|
-
server.once("listening", onListening);
|
|
148
|
-
server.listen(port, bindHost);
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
120
|
export function shouldServeViteDevHtml(req) {
|
|
152
121
|
const pathname = req.path;
|
|
153
122
|
if (VITE_DEV_STATIC_PATHS.has(pathname))
|
|
@@ -318,73 +287,7 @@ export async function createApp(db, opts) {
|
|
|
318
287
|
api.use(summarySlotRoutes(db));
|
|
319
288
|
api.use(statusCardRoutes(db));
|
|
320
289
|
api.use(teamsCatalogRoutes(db));
|
|
321
|
-
|
|
322
|
-
// back through the callback below, so the shutdown hook can cancel every live
|
|
323
|
-
// session (SR-4).
|
|
324
|
-
let setupTokenLoginService = null;
|
|
325
|
-
// The dedicated proxy IP or CIDR allowlist for the confidential setup-token
|
|
326
|
-
// login responses (SR-7). The global `TRUST_PROXY` setting does not satisfy
|
|
327
|
-
// the guard; an operator sets this allowlist to the real TLS-terminating
|
|
328
|
-
// proxy addresses. An empty value keeps the confidential responses on direct
|
|
329
|
-
// TLS (or a `local_trusted` loopback peer) only.
|
|
330
|
-
const setupTokenLoginProxyAllowlist = (process.env.CLAUDE_LOGIN_TRUSTED_PROXIES ?? "")
|
|
331
|
-
.split(",")
|
|
332
|
-
.map((entry) => entry.trim())
|
|
333
|
-
.filter((entry) => entry.length > 0);
|
|
334
|
-
// Bind the production setup-token login transport. It carries the live lease
|
|
335
|
-
// manager, the login-process factory over the sandbox pseudo-terminal, and the
|
|
336
|
-
// durable cleanup store. The factory passes only the fixed command
|
|
337
|
-
// `CLAUDE_SETUP_TOKEN_COMMAND`; it never reads a command from a
|
|
338
|
-
// route, a request body, or an adapter configuration. The durable store and the
|
|
339
|
-
// startup reaper are live now, so a restart reaps a leftover lease.
|
|
340
|
-
//
|
|
341
|
-
// The live sandbox pseudo-terminal opener binds inside the sandbox provider
|
|
342
|
-
// worker, so the server process does not hold the raw sandbox process. The
|
|
343
|
-
// opener drives the worker through the plugin worker manager route gate.
|
|
344
|
-
// The manager mints a host-owned route identifier, permits one
|
|
345
|
-
// active credential pseudo-terminal per worker, binds the worker session
|
|
346
|
-
// identifier one time for output only, and terminalizes the route on every open
|
|
347
|
-
// failure path. With the opener supplied, the provider acquires a lease and the
|
|
348
|
-
// start route drives a live login instead of the fixed 503.
|
|
349
|
-
const setupTokenLoginTransport = buildSetupTokenLoginTransport({
|
|
350
|
-
sandbox: createProductionSetupTokenSandboxProvider({
|
|
351
|
-
environments: environmentService(db),
|
|
352
|
-
environmentRuntime: environmentRuntimeService(db, { pluginWorkerManager: workerManager }),
|
|
353
|
-
openLivePtySession: createWorkerBoundSetupTokenPtyOpener({
|
|
354
|
-
workerManager,
|
|
355
|
-
environments: environmentService(db),
|
|
356
|
-
log: (line) => logger.info(line),
|
|
357
|
-
}),
|
|
358
|
-
log: (line) => logger.info(line),
|
|
359
|
-
}),
|
|
360
|
-
store: createProductionSetupTokenCleanupStore(db),
|
|
361
|
-
// Bind the atomic credential-claim writer, so a completed login transitions
|
|
362
|
-
// the durable row to `stored` and stores the minted token in one control-plane
|
|
363
|
-
// transaction. The writer reads the company and the owner only from the
|
|
364
|
-
// immutable session scope. The confirm-replacement flow owns rotation. Without
|
|
365
|
-
// this writer the router falls back to the deferred, fail-closed 503 and never
|
|
366
|
-
// stores the token.
|
|
367
|
-
completeCredential: createSetupTokenSecretWriter({ db }),
|
|
368
|
-
// Forward the login runner diagnostic lines to the server logger. The
|
|
369
|
-
// runner is the sole producer, and every line is a fixed, non-secret
|
|
370
|
-
// literal. Without this sink the diagnostics fall back to a no-op in
|
|
371
|
-
// production, so a failed login leaves no log trail.
|
|
372
|
-
log: (line) => logger.info(line),
|
|
373
|
-
});
|
|
374
|
-
api.use(agentRoutes(db, {
|
|
375
|
-
pluginWorkerManager: workerManager,
|
|
376
|
-
deploymentMode: opts.deploymentMode,
|
|
377
|
-
confidentialProxyAllowlist: setupTokenLoginProxyAllowlist,
|
|
378
|
-
setupTokenLogin: setupTokenLoginTransport,
|
|
379
|
-
onSetupTokenLoginService: (service) => {
|
|
380
|
-
setupTokenLoginService = service;
|
|
381
|
-
// Startup reaper (SR-4): release any lease whose login session is
|
|
382
|
-
// terminal or past its deadline after a restart. The DB is ready here.
|
|
383
|
-
void service.reap().catch((err) => {
|
|
384
|
-
logger.error({ err }, "Setup-token login startup reaper failed");
|
|
385
|
-
});
|
|
386
|
-
},
|
|
387
|
-
}));
|
|
290
|
+
api.use(agentRoutes(db, { pluginWorkerManager: workerManager }));
|
|
388
291
|
api.use(assetRoutes(db, opts.storageService));
|
|
389
292
|
api.use(projectRoutes(db));
|
|
390
293
|
api.use(caseRoutes(db, opts.storageService));
|
|
@@ -403,7 +306,6 @@ export async function createApp(db, opts) {
|
|
|
403
306
|
}));
|
|
404
307
|
api.use(executionWorkspaceRoutes(db, { pluginWorkerManager: workerManager }));
|
|
405
308
|
api.use(goalRoutes(db));
|
|
406
|
-
api.use(onboardingSeedRoutes(db));
|
|
407
309
|
api.use(boardChatRoutes(db, { deploymentMode: opts.deploymentMode }));
|
|
408
310
|
api.use(approvalRoutes(db, { pluginWorkerManager: workerManager }));
|
|
409
311
|
api.use(secretRoutes(db));
|
|
@@ -474,8 +376,6 @@ export async function createApp(db, opts) {
|
|
|
474
376
|
});
|
|
475
377
|
const hostServiceCleanup = createPluginHostServiceCleanup(lifecycle, hostServicesDisposers);
|
|
476
378
|
let viteHtmlRenderer = null;
|
|
477
|
-
let viteDevServer = null;
|
|
478
|
-
let viteHmrServer = null;
|
|
479
379
|
const loader = pluginLoader(db, {
|
|
480
380
|
localPluginDir: opts.localPluginDir ?? DEFAULT_LOCAL_PLUGIN_DIR,
|
|
481
381
|
migrationDb: opts.pluginMigrationDb,
|
|
@@ -519,7 +419,6 @@ export async function createApp(db, opts) {
|
|
|
519
419
|
deploymentExposure: opts.deploymentExposure,
|
|
520
420
|
bindHost: opts.bindHost,
|
|
521
421
|
allowedHostnames: opts.allowedHostnames,
|
|
522
|
-
authPublicBaseUrl: opts.authPublicBaseUrl,
|
|
523
422
|
}));
|
|
524
423
|
app.use("/api", api);
|
|
525
424
|
app.use("/api", (_req, res) => {
|
|
@@ -583,40 +482,20 @@ export async function createApp(db, opts) {
|
|
|
583
482
|
const publicUiRoot = path.resolve(uiRoot, "public");
|
|
584
483
|
const hmrPort = resolveViteHmrPort(opts.serverPort);
|
|
585
484
|
const hmrHost = resolveViteHmrHost(opts.bindHost);
|
|
586
|
-
const hmrProtocol = resolveViteHmrProtocol(process.env.PAPERCLIP_VITE_HMR_PROTOCOL);
|
|
587
|
-
const hmrServer = createHttpServer((_req, res) => {
|
|
588
|
-
res.writeHead(426, { "Content-Type": "text/plain" });
|
|
589
|
-
res.end("Upgrade Required");
|
|
590
|
-
});
|
|
591
485
|
const { createServer: createViteServer } = await import("vite");
|
|
592
486
|
const vite = await createViteServer({
|
|
593
487
|
root: uiRoot,
|
|
594
488
|
appType: "custom",
|
|
595
489
|
server: {
|
|
596
|
-
// Listener binding and browser HMR hostname are deliberately separate:
|
|
597
|
-
// exposed branch runtimes stay loopback-only while the browser uses the
|
|
598
|
-
// current MagicDNS hostname through the broker's HTTPS listener.
|
|
599
|
-
host: opts.bindHost,
|
|
600
490
|
middlewareMode: true,
|
|
601
491
|
hmr: {
|
|
602
|
-
server: hmrServer,
|
|
603
492
|
...(hmrHost ? { host: hmrHost } : {}),
|
|
604
|
-
...(hmrProtocol ? { protocol: hmrProtocol } : {}),
|
|
605
493
|
port: hmrPort,
|
|
606
494
|
clientPort: hmrPort,
|
|
607
495
|
},
|
|
608
496
|
allowedHosts: privateHostnameGateEnabled ? Array.from(privateHostnameAllowSet) : undefined,
|
|
609
497
|
},
|
|
610
498
|
});
|
|
611
|
-
try {
|
|
612
|
-
await listenViteHmrServer(hmrServer, hmrPort, opts.bindHost);
|
|
613
|
-
}
|
|
614
|
-
catch (error) {
|
|
615
|
-
await vite.close();
|
|
616
|
-
throw error;
|
|
617
|
-
}
|
|
618
|
-
viteDevServer = vite;
|
|
619
|
-
viteHmrServer = hmrServer;
|
|
620
499
|
viteHtmlRenderer = createCachedViteHtmlRenderer({
|
|
621
500
|
vite,
|
|
622
501
|
uiRoot,
|
|
@@ -677,42 +556,6 @@ export async function createApp(db, opts) {
|
|
|
677
556
|
if (opts.feedbackExportService) {
|
|
678
557
|
void flushPendingFeedbackExports();
|
|
679
558
|
}
|
|
680
|
-
// Abandoned chunked-import spool sweep: hourly (plus once at startup),
|
|
681
|
-
// deleting spool dirs whose transfer saw no activity for 24h and cancelling
|
|
682
|
-
// their still-open ledger runs. Same setInterval + unref + shutdown-clear
|
|
683
|
-
// shape as the feedback export flush above.
|
|
684
|
-
const importTransferSpoolRoot = resolveDefaultImportTransferSpoolRoot();
|
|
685
|
-
const sweepImportTransferSpools = () => {
|
|
686
|
-
sweepAbandonedImportTransferSpools(db, importTransferSpoolRoot)
|
|
687
|
-
.then((result) => {
|
|
688
|
-
if (result.swept > 0) {
|
|
689
|
-
logger.info(result, "swept abandoned company import transfer spools");
|
|
690
|
-
}
|
|
691
|
-
})
|
|
692
|
-
.catch((err) => {
|
|
693
|
-
logger.error({ err }, "abandoned company import transfer spool sweep failed");
|
|
694
|
-
});
|
|
695
|
-
};
|
|
696
|
-
let importTransferSweepTimer = setInterval(sweepImportTransferSpools, IMPORT_TRANSFER_SPOOL_SWEEP_INTERVAL_MS);
|
|
697
|
-
importTransferSweepTimer.unref?.();
|
|
698
|
-
// Startup only (never on the hourly interval — that would kill live
|
|
699
|
-
// applies): apply jobs are in-memory in this single process, so any run
|
|
700
|
-
// still "applying" now was interrupted by the previous shutdown and would
|
|
701
|
-
// otherwise 409 every retry forever. Fail those stranded runs — their
|
|
702
|
-
// spooled parts stay reusable — then run the normal sweep once.
|
|
703
|
-
void companyTransferRunService
|
|
704
|
-
.recoverStrandedApplyingRuns(db)
|
|
705
|
-
.then((recovered) => {
|
|
706
|
-
if (recovered.length > 0) {
|
|
707
|
-
logger.warn({ count: recovered.length, runIds: recovered }, "failed company transfer runs stranded in applying by a restart");
|
|
708
|
-
}
|
|
709
|
-
})
|
|
710
|
-
.catch((err) => {
|
|
711
|
-
logger.error({ err }, "stranded company transfer apply recovery failed");
|
|
712
|
-
})
|
|
713
|
-
.finally(() => {
|
|
714
|
-
sweepImportTransferSpools();
|
|
715
|
-
});
|
|
716
559
|
void toolDispatcher.initialize().catch((err) => {
|
|
717
560
|
logger.error({ err }, "Failed to initialize plugin tool dispatcher");
|
|
718
561
|
});
|
|
@@ -767,40 +610,19 @@ export async function createApp(db, opts) {
|
|
|
767
610
|
logger.error({ err }, "Failed to load ready plugins on startup");
|
|
768
611
|
});
|
|
769
612
|
app.locals.bundledPluginsStartup = bundledPluginsStartup;
|
|
770
|
-
|
|
771
|
-
// second caller (for example the `exit` handler) awaits the same completion
|
|
772
|
-
// instead of starting a second teardown.
|
|
773
|
-
let appServicesShutdown = null;
|
|
613
|
+
let appServicesShutdown = false;
|
|
774
614
|
const shutdownAppServices = () => {
|
|
775
615
|
if (appServicesShutdown)
|
|
776
|
-
return
|
|
777
|
-
appServicesShutdown =
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
devWatcher?.close();
|
|
784
|
-
viteHtmlRenderer?.dispose();
|
|
785
|
-
void viteDevServer?.close().catch(() => undefined);
|
|
786
|
-
viteHmrServer?.close();
|
|
787
|
-
hostServiceCleanup.disposeAll();
|
|
788
|
-
hostServiceCleanup.teardown();
|
|
789
|
-
// Cancel every live setup-token login session and AWAIT the cancellation,
|
|
790
|
-
// so each direct child stops and the server releases each lease before the
|
|
791
|
-
// caller stops the database and the provider. A lease release that
|
|
792
|
-
// fails stays a durable record for the startup reaper.
|
|
793
|
-
await setupTokenLoginService?.shutdown();
|
|
794
|
-
})();
|
|
795
|
-
return appServicesShutdown;
|
|
616
|
+
return;
|
|
617
|
+
appServicesShutdown = true;
|
|
618
|
+
disableFeedbackExportFlushes();
|
|
619
|
+
devWatcher?.close();
|
|
620
|
+
viteHtmlRenderer?.dispose();
|
|
621
|
+
hostServiceCleanup.disposeAll();
|
|
622
|
+
hostServiceCleanup.teardown();
|
|
796
623
|
};
|
|
797
624
|
app.locals.paperclipShutdown = shutdownAppServices;
|
|
798
|
-
|
|
799
|
-
// the best-effort cleanup and drops the returned promise. The orderly signal
|
|
800
|
-
// path awaits `shutdownAppServices` in full before the process exits.
|
|
801
|
-
process.once("exit", () => {
|
|
802
|
-
void shutdownAppServices();
|
|
803
|
-
});
|
|
625
|
+
process.once("exit", shutdownAppServices);
|
|
804
626
|
process.once("beforeExit", () => {
|
|
805
627
|
void flushPluginLogBuffer();
|
|
806
628
|
});
|