@paperclipai/server 2026.824.0 → 2026.825.0-beta.1
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/builtin-adapter-types.d.ts.map +1 -1
- package/dist/adapters/builtin-adapter-types.js +1 -0
- package/dist/adapters/builtin-adapter-types.js.map +1 -1
- package/dist/adapters/plugin-loader.d.ts +1 -0
- package/dist/adapters/plugin-loader.d.ts.map +1 -1
- package/dist/adapters/plugin-loader.js +12 -1
- package/dist/adapters/plugin-loader.js.map +1 -1
- package/dist/adapters/plugin-loader.test.d.ts +2 -0
- package/dist/adapters/plugin-loader.test.d.ts.map +1 -0
- package/dist/adapters/plugin-loader.test.js +37 -0
- package/dist/adapters/plugin-loader.test.js.map +1 -0
- package/dist/adapters/registry.d.ts.map +1 -1
- package/dist/adapters/registry.js +68 -5
- package/dist/adapters/registry.js.map +1 -1
- package/dist/adapters/registry.test.d.ts +2 -0
- package/dist/adapters/registry.test.d.ts.map +1 -0
- package/dist/adapters/registry.test.js +35 -0
- package/dist/adapters/registry.test.js.map +1 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +5 -7
- package/dist/app.js.map +1 -1
- package/dist/auth/better-auth.d.ts +10 -0
- package/dist/auth/better-auth.d.ts.map +1 -1
- package/dist/auth/better-auth.js +47 -0
- package/dist/auth/better-auth.js.map +1 -1
- package/dist/auth/workspace-login-handoff-exchange.d.ts +75 -0
- package/dist/auth/workspace-login-handoff-exchange.d.ts.map +1 -0
- package/dist/auth/workspace-login-handoff-exchange.js +73 -0
- package/dist/auth/workspace-login-handoff-exchange.js.map +1 -0
- package/dist/auth/workspace-login-handoff-plugin.d.ts +40 -0
- package/dist/auth/workspace-login-handoff-plugin.d.ts.map +1 -0
- package/dist/auth/workspace-login-handoff-plugin.js +140 -0
- package/dist/auth/workspace-login-handoff-plugin.js.map +1 -0
- package/dist/auth/workspace-login-handoff.d.ts +189 -0
- package/dist/auth/workspace-login-handoff.d.ts.map +1 -0
- package/dist/auth/workspace-login-handoff.js +319 -0
- package/dist/auth/workspace-login-handoff.js.map +1 -0
- package/dist/build-info.json +3 -0
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +14 -0
- package/dist/config.js.map +1 -1
- package/dist/dev-runner-worktree.d.ts.map +1 -1
- package/dist/dev-runner-worktree.js +5 -0
- package/dist/dev-runner-worktree.js.map +1 -1
- package/dist/duplex-aggregate-ceiling-env.d.ts +21 -0
- package/dist/duplex-aggregate-ceiling-env.d.ts.map +1 -0
- package/dist/duplex-aggregate-ceiling-env.js +23 -0
- package/dist/duplex-aggregate-ceiling-env.js.map +1 -0
- package/dist/embedded-postgres-supervisor.d.ts +27 -0
- package/dist/embedded-postgres-supervisor.d.ts.map +1 -0
- package/dist/embedded-postgres-supervisor.js +72 -0
- package/dist/embedded-postgres-supervisor.js.map +1 -0
- package/dist/errors.d.ts +2 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +6 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +115 -7
- package/dist/index.js.map +1 -1
- package/dist/instrumentation.d.ts +33 -0
- package/dist/instrumentation.d.ts.map +1 -1
- package/dist/instrumentation.js +68 -1
- package/dist/instrumentation.js.map +1 -1
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js +35 -10
- package/dist/middleware/auth.js.map +1 -1
- package/dist/middleware/error-handler.d.ts.map +1 -1
- package/dist/middleware/error-handler.js +8 -1
- package/dist/middleware/error-handler.js.map +1 -1
- package/dist/middleware/logger.d.ts.map +1 -1
- package/dist/middleware/logger.js +5 -2
- package/dist/middleware/logger.js.map +1 -1
- package/dist/middleware/redact-sensitive.d.ts.map +1 -1
- package/dist/middleware/redact-sensitive.js +4 -0
- package/dist/middleware/redact-sensitive.js.map +1 -1
- package/dist/middleware/validate.d.ts +3 -1
- package/dist/middleware/validate.d.ts.map +1 -1
- package/dist/middleware/validate.js +37 -0
- package/dist/middleware/validate.js.map +1 -1
- package/dist/routes/access.d.ts.map +1 -1
- package/dist/routes/access.js +20 -0
- package/dist/routes/access.js.map +1 -1
- package/dist/routes/activity.js +4 -4
- package/dist/routes/activity.js.map +1 -1
- package/dist/routes/adapter-login-route-spine.d.ts +81 -0
- package/dist/routes/adapter-login-route-spine.d.ts.map +1 -0
- package/dist/routes/adapter-login-route-spine.js +40 -0
- package/dist/routes/adapter-login-route-spine.js.map +1 -0
- package/dist/routes/adapters.d.ts +33 -0
- package/dist/routes/adapters.d.ts.map +1 -1
- package/dist/routes/adapters.js +35 -1
- package/dist/routes/adapters.js.map +1 -1
- package/dist/routes/adapters.test.d.ts +2 -0
- package/dist/routes/adapters.test.d.ts.map +1 -0
- package/dist/routes/adapters.test.js +58 -0
- package/dist/routes/adapters.test.js.map +1 -0
- package/dist/routes/agents.d.ts.map +1 -1
- package/dist/routes/agents.js +281 -91
- package/dist/routes/agents.js.map +1 -1
- package/dist/routes/cases.d.ts +11 -22
- package/dist/routes/cases.d.ts.map +1 -1
- package/dist/routes/cases.js +13 -13
- package/dist/routes/companies.js +3 -3
- package/dist/routes/decision-training.js +6 -6
- package/dist/routes/decisions.js +4 -4
- package/dist/routes/decisions.js.map +1 -1
- package/dist/routes/environments.d.ts.map +1 -1
- package/dist/routes/environments.js +79 -6
- package/dist/routes/environments.js.map +1 -1
- package/dist/routes/execution-workspaces.d.ts.map +1 -1
- package/dist/routes/execution-workspaces.js +384 -16
- package/dist/routes/execution-workspaces.js.map +1 -1
- package/dist/routes/file-resources.js +2 -2
- package/dist/routes/health.d.ts.map +1 -1
- package/dist/routes/health.js +58 -4
- package/dist/routes/health.js.map +1 -1
- package/dist/routes/instance-settings.d.ts.map +1 -1
- package/dist/routes/instance-settings.js +40 -0
- package/dist/routes/instance-settings.js.map +1 -1
- package/dist/routes/issues.d.ts +10 -0
- package/dist/routes/issues.d.ts.map +1 -1
- package/dist/routes/issues.js +495 -65
- package/dist/routes/issues.js.map +1 -1
- package/dist/routes/openapi.d.ts.map +1 -1
- package/dist/routes/openapi.js +241 -122
- package/dist/routes/openapi.js.map +1 -1
- package/dist/routes/pipelines.js +19 -19
- package/dist/routes/plugins.d.ts.map +1 -1
- package/dist/routes/plugins.js +22 -0
- package/dist/routes/plugins.js.map +1 -1
- package/dist/routes/projects.d.ts.map +1 -1
- package/dist/routes/projects.js +2 -0
- package/dist/routes/projects.js.map +1 -1
- package/dist/routes/routines.js +2 -2
- package/dist/routes/routines.js.map +1 -1
- package/dist/routes/secrets.d.ts +1 -1
- package/dist/routes/secrets.d.ts.map +1 -1
- package/dist/routes/secrets.js +39 -50
- package/dist/routes/secrets.js.map +1 -1
- package/dist/routes/setup-token-route.test.js +50 -3
- package/dist/routes/setup-token-route.test.js.map +1 -1
- package/dist/services/adapter-login-lease.d.ts +50 -0
- package/dist/services/adapter-login-lease.d.ts.map +1 -0
- package/dist/services/adapter-login-lease.js +26 -0
- package/dist/services/adapter-login-lease.js.map +1 -0
- package/dist/services/adapter-login-lease.test.d.ts +2 -0
- package/dist/services/adapter-login-lease.test.d.ts.map +1 -0
- package/dist/services/adapter-login-lease.test.js +68 -0
- package/dist/services/adapter-login-lease.test.js.map +1 -0
- package/dist/services/agent-action-audit.js +1 -1
- package/dist/services/agent-secret-bindings.d.ts +15 -0
- package/dist/services/agent-secret-bindings.d.ts.map +1 -1
- package/dist/services/agent-secret-bindings.js +2 -2
- package/dist/services/agent-secret-bindings.js.map +1 -1
- package/dist/services/agents.d.ts +13 -13
- package/dist/services/agents.d.ts.map +1 -1
- package/dist/services/agents.js +46 -5
- package/dist/services/agents.js.map +1 -1
- package/dist/services/artifact-review-documents.d.ts +34 -0
- package/dist/services/artifact-review-documents.d.ts.map +1 -0
- package/dist/services/artifact-review-documents.js +196 -0
- package/dist/services/artifact-review-documents.js.map +1 -0
- package/dist/services/assets.d.ts +1 -1
- package/dist/services/codex-device-login-credential-read.d.ts +58 -0
- package/dist/services/codex-device-login-credential-read.d.ts.map +1 -0
- package/dist/services/codex-device-login-credential-read.js +118 -0
- package/dist/services/codex-device-login-credential-read.js.map +1 -0
- package/dist/services/codex-device-login-reaper.d.ts.map +1 -1
- package/dist/services/codex-device-login-reaper.js +8 -5
- package/dist/services/codex-device-login-reaper.js.map +1 -1
- package/dist/services/codex-device-login-service.d.ts +127 -36
- package/dist/services/codex-device-login-service.d.ts.map +1 -1
- package/dist/services/codex-device-login-service.js +204 -84
- package/dist/services/codex-device-login-service.js.map +1 -1
- package/dist/services/company-portability.d.ts +3 -1
- package/dist/services/company-portability.d.ts.map +1 -1
- package/dist/services/company-portability.js +76 -20
- package/dist/services/company-portability.js.map +1 -1
- package/dist/services/company-skill-policy.d.ts +1 -1
- package/dist/services/costs.d.ts +1 -1
- package/dist/services/decisions.d.ts +6 -6
- package/dist/services/duplex-observability-recorder.d.ts +62 -0
- package/dist/services/duplex-observability-recorder.d.ts.map +1 -0
- package/dist/services/duplex-observability-recorder.js +54 -0
- package/dist/services/duplex-observability-recorder.js.map +1 -0
- package/dist/services/environment-config.js +5 -5
- package/dist/services/environment-config.js.map +1 -1
- package/dist/services/environment-custom-image-runtime.d.ts +116 -0
- package/dist/services/environment-custom-image-runtime.d.ts.map +1 -1
- package/dist/services/environment-custom-image-runtime.js +255 -1
- package/dist/services/environment-custom-image-runtime.js.map +1 -1
- package/dist/services/environment-custom-images.d.ts +39 -0
- package/dist/services/environment-custom-images.d.ts.map +1 -1
- package/dist/services/environment-custom-images.js +219 -17
- package/dist/services/environment-custom-images.js.map +1 -1
- package/dist/services/environment-driver-traits.d.ts +109 -0
- package/dist/services/environment-driver-traits.d.ts.map +1 -0
- package/dist/services/environment-driver-traits.js +102 -0
- package/dist/services/environment-driver-traits.js.map +1 -0
- package/dist/services/environment-execution-target.d.ts +4 -0
- package/dist/services/environment-execution-target.d.ts.map +1 -1
- package/dist/services/environment-execution-target.js +63 -7
- package/dist/services/environment-execution-target.js.map +1 -1
- package/dist/services/environment-run-orchestrator.d.ts +27 -1
- package/dist/services/environment-run-orchestrator.d.ts.map +1 -1
- package/dist/services/environment-run-orchestrator.js +24 -4
- package/dist/services/environment-run-orchestrator.js.map +1 -1
- package/dist/services/environment-runtime.d.ts +118 -20
- package/dist/services/environment-runtime.d.ts.map +1 -1
- package/dist/services/environment-runtime.js +436 -91
- package/dist/services/environment-runtime.js.map +1 -1
- package/dist/services/environments.d.ts.map +1 -1
- package/dist/services/environments.js +20 -2
- package/dist/services/environments.js.map +1 -1
- package/dist/services/execution-workspace-branch-ownership.d.ts +4 -0
- package/dist/services/execution-workspace-branch-ownership.d.ts.map +1 -0
- package/dist/services/execution-workspace-branch-ownership.js +9 -0
- package/dist/services/execution-workspace-branch-ownership.js.map +1 -0
- package/dist/services/execution-workspace-policy.d.ts.map +1 -1
- package/dist/services/execution-workspace-policy.js +3 -0
- package/dist/services/execution-workspace-policy.js.map +1 -1
- package/dist/services/execution-workspaces.d.ts +2 -0
- package/dist/services/execution-workspaces.d.ts.map +1 -1
- package/dist/services/execution-workspaces.js +90 -2
- package/dist/services/execution-workspaces.js.map +1 -1
- package/dist/services/external-objects.d.ts +19 -19
- package/dist/services/finance.d.ts +1 -1
- package/dist/services/goals.d.ts +2 -2
- package/dist/services/heartbeat-policy.d.ts +3 -0
- package/dist/services/heartbeat-policy.d.ts.map +1 -0
- package/dist/services/heartbeat-policy.js +10 -0
- package/dist/services/heartbeat-policy.js.map +1 -0
- package/dist/services/heartbeat-run-runtime-status.test.js +1 -1
- package/dist/services/heartbeat-run-runtime-status.test.js.map +1 -1
- package/dist/services/heartbeat.d.ts +23 -1
- package/dist/services/heartbeat.d.ts.map +1 -1
- package/dist/services/heartbeat.js +192 -11
- package/dist/services/heartbeat.js.map +1 -1
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +1 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/instance-settings.d.ts.map +1 -1
- package/dist/services/instance-settings.js +2 -0
- package/dist/services/instance-settings.js.map +1 -1
- package/dist/services/issue-dependency-wakeups.d.ts +57 -9
- package/dist/services/issue-dependency-wakeups.d.ts.map +1 -1
- package/dist/services/issue-dependency-wakeups.js +146 -14
- package/dist/services/issue-dependency-wakeups.js.map +1 -1
- package/dist/services/issue-dependency-wakeups.test.d.ts +2 -0
- package/dist/services/issue-dependency-wakeups.test.d.ts.map +1 -0
- package/dist/services/issue-dependency-wakeups.test.js +183 -0
- package/dist/services/issue-dependency-wakeups.test.js.map +1 -0
- package/dist/services/issue-recovery-actions.d.ts +6 -1
- package/dist/services/issue-recovery-actions.d.ts.map +1 -1
- package/dist/services/issue-recovery-actions.js +123 -44
- package/dist/services/issue-recovery-actions.js.map +1 -1
- package/dist/services/issue-thread-interactions.d.ts +8 -0
- package/dist/services/issue-thread-interactions.d.ts.map +1 -1
- package/dist/services/issue-thread-interactions.js +220 -10
- package/dist/services/issue-thread-interactions.js.map +1 -1
- package/dist/services/issues.d.ts +8 -7
- package/dist/services/issues.d.ts.map +1 -1
- package/dist/services/issues.js +84 -12
- package/dist/services/issues.js.map +1 -1
- package/dist/services/local-service-supervisor.d.ts +61 -1
- package/dist/services/local-service-supervisor.d.ts.map +1 -1
- package/dist/services/local-service-supervisor.js +221 -25
- package/dist/services/local-service-supervisor.js.map +1 -1
- package/dist/services/login-command.d.ts +46 -0
- package/dist/services/login-command.d.ts.map +1 -0
- package/dist/services/login-command.js +87 -0
- package/dist/services/login-command.js.map +1 -0
- package/dist/services/login-command.test.d.ts +2 -0
- package/dist/services/login-command.test.d.ts.map +1 -0
- package/dist/services/login-command.test.js +71 -0
- package/dist/services/login-command.test.js.map +1 -0
- package/dist/services/managed-workspace-identity.d.ts +140 -0
- package/dist/services/managed-workspace-identity.d.ts.map +1 -0
- package/dist/services/managed-workspace-identity.js +277 -0
- package/dist/services/managed-workspace-identity.js.map +1 -0
- package/dist/services/plugin-environment-driver.d.ts +15 -1
- package/dist/services/plugin-environment-driver.d.ts.map +1 -1
- package/dist/services/plugin-environment-driver.js +23 -1
- package/dist/services/plugin-environment-driver.js.map +1 -1
- package/dist/services/plugin-host-services.d.ts +3 -2
- package/dist/services/plugin-host-services.d.ts.map +1 -1
- package/dist/services/plugin-host-services.js +11 -2
- package/dist/services/plugin-host-services.js.map +1 -1
- package/dist/services/plugin-loader.d.ts.map +1 -1
- package/dist/services/plugin-loader.js +39 -8
- package/dist/services/plugin-loader.js.map +1 -1
- package/dist/services/plugin-managed-agents.d.ts.map +1 -1
- package/dist/services/plugin-managed-agents.js +50 -5
- package/dist/services/plugin-managed-agents.js.map +1 -1
- package/dist/services/plugin-manifest-validator.d.ts.map +1 -1
- package/dist/services/plugin-manifest-validator.js +5 -2
- package/dist/services/plugin-manifest-validator.js.map +1 -1
- package/dist/services/plugin-registry.d.ts +5 -5
- package/dist/services/plugin-worker-manager.d.ts +158 -11
- package/dist/services/plugin-worker-manager.d.ts.map +1 -1
- package/dist/services/plugin-worker-manager.js +1139 -79
- package/dist/services/plugin-worker-manager.js.map +1 -1
- package/dist/services/projects.d.ts +1 -1
- package/dist/services/recovery/disposition-repair.d.ts +24 -0
- package/dist/services/recovery/disposition-repair.d.ts.map +1 -0
- package/dist/services/recovery/disposition-repair.js +125 -0
- package/dist/services/recovery/disposition-repair.js.map +1 -0
- package/dist/services/recovery/service.d.ts +6 -6
- package/dist/services/recovery/service.d.ts.map +1 -1
- package/dist/services/recovery/service.js +856 -384
- package/dist/services/recovery/service.js.map +1 -1
- package/dist/services/recovery/stranded-notice.js +4 -4
- package/dist/services/recovery/stranded-notice.js.map +1 -1
- package/dist/services/recovery/stranded-notice.test.js +1 -1
- package/dist/services/recovery/stranded-notice.test.js.map +1 -1
- package/dist/services/recovery/successful-run-handoff.d.ts +1 -1
- package/dist/services/recovery/successful-run-handoff.d.ts.map +1 -1
- package/dist/services/recovery/successful-run-handoff.js +6 -4
- package/dist/services/recovery/successful-run-handoff.js.map +1 -1
- package/dist/services/recovery/successful-run-handoff.test.js +1 -1
- package/dist/services/recovery/successful-run-handoff.test.js.map +1 -1
- package/dist/services/recovery-observability.d.ts +1 -1
- package/dist/services/recovery-observability.d.ts.map +1 -1
- package/dist/services/recovery-observability.js +4 -1
- package/dist/services/recovery-observability.js.map +1 -1
- package/dist/services/routines.d.ts.map +1 -1
- package/dist/services/routines.js +86 -1
- package/dist/services/routines.js.map +1 -1
- package/dist/services/runtime-exposure/loopback-listener.js +1 -1
- package/dist/services/runtime-exposure/loopback-listener.js.map +1 -1
- package/dist/services/runtime-exposure/loopback-listener.test.js +1 -1
- package/dist/services/runtime-exposure/loopback-listener.test.js.map +1 -1
- package/dist/services/scripts/codex-auth-read.cjs +93 -0
- package/dist/services/secret-proposal-authorization.d.ts +15 -0
- package/dist/services/secret-proposal-authorization.d.ts.map +1 -0
- package/dist/services/secret-proposal-authorization.js +29 -0
- package/dist/services/secret-proposal-authorization.js.map +1 -0
- package/dist/services/secret-proposal-notifications.d.ts +18 -0
- package/dist/services/secret-proposal-notifications.d.ts.map +1 -0
- package/dist/services/secret-proposal-notifications.js +37 -0
- package/dist/services/secret-proposal-notifications.js.map +1 -0
- package/dist/services/secret-proposals.d.ts +20 -10
- package/dist/services/secret-proposals.d.ts.map +1 -1
- package/dist/services/secret-proposals.js +205 -14
- package/dist/services/secret-proposals.js.map +1 -1
- package/dist/services/secrets.d.ts +3 -3
- package/dist/services/settings-visibility.d.ts +17 -0
- package/dist/services/settings-visibility.d.ts.map +1 -0
- package/dist/services/settings-visibility.js +29 -0
- package/dist/services/settings-visibility.js.map +1 -0
- package/dist/services/setup-token-reaper.d.ts +36 -0
- package/dist/services/setup-token-reaper.d.ts.map +1 -0
- package/dist/services/setup-token-reaper.js +38 -0
- package/dist/services/setup-token-reaper.js.map +1 -0
- package/dist/services/setup-token-reaper.test.d.ts +2 -0
- package/dist/services/setup-token-reaper.test.d.ts.map +1 -0
- package/dist/services/setup-token-reaper.test.js +123 -0
- package/dist/services/setup-token-reaper.test.js.map +1 -0
- package/dist/services/setup-token-session.d.ts +57 -45
- package/dist/services/setup-token-session.d.ts.map +1 -1
- package/dist/services/setup-token-session.js +118 -110
- package/dist/services/setup-token-session.js.map +1 -1
- package/dist/services/setup-token-session.test.js +88 -47
- package/dist/services/setup-token-session.test.js.map +1 -1
- package/dist/services/setup-token-transport-binding.d.ts +20 -12
- package/dist/services/setup-token-transport-binding.d.ts.map +1 -1
- package/dist/services/setup-token-transport-binding.js +59 -32
- package/dist/services/setup-token-transport-binding.js.map +1 -1
- package/dist/services/setup-token-transport-binding.test.js +50 -17
- package/dist/services/setup-token-transport-binding.test.js.map +1 -1
- package/dist/services/smoke-lab.d.ts +1 -1
- package/dist/services/stalled-review-decisions.d.ts +1 -1
- package/dist/services/status-cards.d.ts +168 -168
- package/dist/services/tool-access-policy.d.ts +2 -2
- package/dist/services/tool-gateway.d.ts +1 -1
- package/dist/services/work-products.d.ts +19 -0
- package/dist/services/work-products.d.ts.map +1 -1
- package/dist/services/work-products.js +50 -3
- package/dist/services/work-products.js.map +1 -1
- package/dist/services/workspace-git-operation-scheduler.test.js +10 -3
- package/dist/services/workspace-git-operation-scheduler.test.js.map +1 -1
- package/dist/services/workspace-instance-cleanup.d.ts +9 -0
- package/dist/services/workspace-instance-cleanup.d.ts.map +1 -1
- package/dist/services/workspace-instance-cleanup.js +29 -3
- package/dist/services/workspace-instance-cleanup.js.map +1 -1
- package/dist/services/workspace-login-handoff-issuer.d.ts +95 -0
- package/dist/services/workspace-login-handoff-issuer.d.ts.map +1 -0
- package/dist/services/workspace-login-handoff-issuer.js +147 -0
- package/dist/services/workspace-login-handoff-issuer.js.map +1 -0
- package/dist/services/workspace-operations.d.ts +4 -1
- package/dist/services/workspace-operations.d.ts.map +1 -1
- package/dist/services/workspace-operations.js +29 -15
- package/dist/services/workspace-operations.js.map +1 -1
- package/dist/services/workspace-readiness.d.ts +56 -0
- package/dist/services/workspace-readiness.d.ts.map +1 -0
- package/dist/services/workspace-readiness.js +250 -0
- package/dist/services/workspace-readiness.js.map +1 -0
- package/dist/services/workspace-realization.d.ts.map +1 -1
- package/dist/services/workspace-realization.js +5 -33
- package/dist/services/workspace-realization.js.map +1 -1
- package/dist/services/workspace-runtime-exposure.test.js +321 -12
- package/dist/services/workspace-runtime-exposure.test.js.map +1 -1
- package/dist/services/workspace-runtime-leases.d.ts.map +1 -1
- package/dist/services/workspace-runtime-leases.js +1 -1
- package/dist/services/workspace-runtime-leases.js.map +1 -1
- package/dist/services/workspace-runtime-read-model.d.ts +8 -8
- package/dist/services/workspace-runtime-read-model.test.js +20 -0
- package/dist/services/workspace-runtime-read-model.test.js.map +1 -1
- package/dist/services/workspace-runtime-ready-comment.test.js +1 -0
- package/dist/services/workspace-runtime-ready-comment.test.js.map +1 -1
- package/dist/services/workspace-runtime.d.ts +77 -4
- package/dist/services/workspace-runtime.d.ts.map +1 -1
- package/dist/services/workspace-runtime.js +1020 -126
- package/dist/services/workspace-runtime.js.map +1 -1
- package/dist/worktree-config.d.ts.map +1 -1
- package/dist/worktree-config.js +3 -76
- package/dist/worktree-config.js.map +1 -1
- package/dist/worktree-seed-manifest.d.ts +8 -0
- package/dist/worktree-seed-manifest.d.ts.map +1 -0
- package/dist/worktree-seed-manifest.js +47 -0
- package/dist/worktree-seed-manifest.js.map +1 -0
- package/package.json +34 -30
- package/skills/paperclip/SKILL.md +2 -0
- package/skills/paperclip/references/api-reference.md +44 -2
- package/ui-dist/assets/CompanyExport-DnEsO-St.js +4 -0
- package/ui-dist/assets/{abnfDiagram-N423BO3Z-BvgoV-u5.js → abnfDiagram-N423BO3Z-2ff8TsQ0.js} +1 -1
- package/ui-dist/assets/{arc-BInnUBUU.js → arc-B2AXsH34.js} +1 -1
- package/ui-dist/assets/architectureDiagram-T3A2C74G-BDxtKMxk.js +36 -0
- package/ui-dist/assets/{blockDiagram-VBNYF7ZC-D9kzAkLN.js → blockDiagram-VBNYF7ZC-BB8T5Mj5.js} +1 -1
- package/ui-dist/assets/{c4Diagram-5PPSVZJV-BwzsgV_0.js → c4Diagram-5PPSVZJV-lMo8qk-x.js} +1 -1
- package/ui-dist/assets/channel-DCTVZpyq.js +1 -0
- package/ui-dist/assets/{chunk-2GRJ4B5K-D2EQ9vrl.js → chunk-2GRJ4B5K-CsS7EB3G.js} +1 -1
- package/ui-dist/assets/{chunk-2Q5K7J3B-DOA_8fSd.js → chunk-2Q5K7J3B-DFyQPjoR.js} +1 -1
- package/ui-dist/assets/{chunk-5RXB4S5H-CT5ukRiT.js → chunk-5RXB4S5H-No2SHOQR.js} +1 -1
- package/ui-dist/assets/{chunk-5VM5RSS4-D2gOlkyB.js → chunk-5VM5RSS4-DdxQO7V9.js} +1 -1
- package/ui-dist/assets/{chunk-6Q2QTUOP-DUb6aG8c.js → chunk-6Q2QTUOP-gbHjh-aK.js} +1 -1
- package/ui-dist/assets/{chunk-GF5L2VYU-BPabG3Cx.js → chunk-GF5L2VYU-h-BBl6NY.js} +1 -1
- package/ui-dist/assets/{chunk-JWPE2WC7-scNfhlZz.js → chunk-JWPE2WC7-Q3pJdTz5.js} +1 -1
- package/ui-dist/assets/{chunk-KBJHAD2P-BcRAzRpq.js → chunk-KBJHAD2P-Ba8LGLSx.js} +1 -1
- package/ui-dist/assets/{chunk-RYQCIY6F-BiZ0-EGh.js → chunk-RYQCIY6F-9VcvykBo.js} +1 -1
- package/ui-dist/assets/{chunk-XXDRQBXY-lJULxFIE.js → chunk-XXDRQBXY-NVbjDH4W.js} +1 -1
- package/ui-dist/assets/classDiagram-JCYQIIEL-CzJ88u6h.js +1 -0
- package/ui-dist/assets/classDiagram-v2-OCEON4UE-CzJ88u6h.js +1 -0
- package/ui-dist/assets/cose-bilkent-JH36ORCC-Cdz4wtUh.js +1 -0
- package/ui-dist/assets/{cynefin-VYW2F7L2-B34jJY1x.js → cynefin-VYW2F7L2-MpzJkW5s.js} +1 -1
- package/ui-dist/assets/{cynefinDiagram-MW4NZA55-DQ8QK8JK.js → cynefinDiagram-MW4NZA55-_Nx8av7i.js} +1 -1
- package/ui-dist/assets/{dagre-VZM6K2ZE-B7lSKgxH.js → dagre-VZM6K2ZE-DcZTQ4Oh.js} +1 -1
- package/ui-dist/assets/{diagram-7IWD3JNH-B3hLAFGE.js → diagram-7IWD3JNH-UyLi2mee.js} +1 -1
- package/ui-dist/assets/{diagram-B4RE2ZJO-CH9Ro9e0.js → diagram-B4RE2ZJO-B6p0Ivqg.js} +1 -1
- package/ui-dist/assets/{diagram-LBJQPF4R-DdPVMii7.js → diagram-LBJQPF4R-C8u6pa97.js} +1 -1
- package/ui-dist/assets/{diagram-Q27KOJAE-f5VXswjc.js → diagram-Q27KOJAE-DbwyagW0.js} +1 -1
- package/ui-dist/assets/{diagram-UB23O5K3-DGqxixsR.js → diagram-UB23O5K3-Cn5BMEH7.js} +1 -1
- package/ui-dist/assets/{ebnfDiagram-BXEA7PRR-C-1klg_w.js → ebnfDiagram-BXEA7PRR-vE0IZma9.js} +1 -1
- package/ui-dist/assets/{erDiagram-JOGREHBK-Dt4qK4gv.js → erDiagram-JOGREHBK-3OZVIlVG.js} +1 -1
- package/ui-dist/assets/{flowDiagram-UKHOOZJN-9ZlrTuET.js → flowDiagram-UKHOOZJN-C94FiPyr.js} +1 -1
- package/ui-dist/assets/ganttDiagram-PKOTCBZU-DMVaPmF-.js +292 -0
- package/ui-dist/assets/{gitGraphDiagram-DS77QQ5N-HH2fSgad.js → gitGraphDiagram-DS77QQ5N-yeFtJ689.js} +1 -1
- package/ui-dist/assets/{index-Cm6iEYPt.js → index-B4ZF3vY8.js} +288 -224
- package/ui-dist/assets/{index-CHXG4GPL.js → index-Bi_vqkcQ.js} +1 -1
- package/ui-dist/assets/{index-Bc9g6q63.js → index-BjDGQg9-.js} +1 -1
- package/ui-dist/assets/{index-FHzrJ7iQ.js → index-BnpyUMTb.js} +1 -1
- package/ui-dist/assets/{index-C1mpWCcn.js → index-BoqQTVMA.js} +1 -1
- package/ui-dist/assets/index-Bq-Mr-4x.js +1 -0
- package/ui-dist/assets/{index-DceuCrr8.js → index-Brb2U7N4.js} +1 -1
- package/ui-dist/assets/{index-DQIrrn2L.js → index-BsBybVwH.js} +1 -1
- package/ui-dist/assets/{index-CQhaM6qd.js → index-C2iv4Wgu.js} +1 -1
- package/ui-dist/assets/{index-DV2FOgyD.js → index-CKxIu7uO.js} +1 -1
- package/ui-dist/assets/{index-DU4U1fuv.js → index-Cb4VGIwp.js} +1 -1
- package/ui-dist/assets/{index-B61ORkIb.js → index-ChpszwcO.js} +1 -1
- package/ui-dist/assets/{index-DlVBBF8o.js → index-CoQFdT8N.js} +1 -1
- package/ui-dist/assets/index-D6P8_f0W.css +1 -0
- package/ui-dist/assets/index-DKdmghUG.js +1 -0
- package/ui-dist/assets/{index-CVTL3aAL.js → index-DaBci7Bx.js} +1 -1
- package/ui-dist/assets/{index-diFs0CNC.js → index-DjYaNiXZ.js} +1 -1
- package/ui-dist/assets/{index-Bf7tyGxE.js → index-DxTBJl4h.js} +1 -1
- package/ui-dist/assets/{index-DsdVneqe.js → index-Dz3E8nn0.js} +1 -1
- package/ui-dist/assets/{index-DvFUXI-Q.js → index-J7dz_hap.js} +1 -1
- package/ui-dist/assets/{index-CLu3Tfpv.js → index-JMp2Gpnz.js} +1 -1
- package/ui-dist/assets/{index-CcRTJ93J.js → index-Kp6wavQt.js} +1 -1
- package/ui-dist/assets/{index-BvFx-4KW.js → index-LBhYZ0L4.js} +1 -1
- package/ui-dist/assets/{index-BbAhzCq8.js → index-c3C0P6l8.js} +4 -4
- package/ui-dist/assets/{index-BY5ITKmG.js → index-pBEPheTW.js} +1 -1
- package/ui-dist/assets/{infoDiagram-6WML65LV-2jai2fw-.js → infoDiagram-6WML65LV-BiL7jKLA.js} +1 -1
- package/ui-dist/assets/{ishikawaDiagram-WSZJBQD7-CUmGhmEb.js → ishikawaDiagram-WSZJBQD7-DYcQy41D.js} +1 -1
- package/ui-dist/assets/{journeyDiagram-NVQOT4AX-CGQuPDO1.js → journeyDiagram-NVQOT4AX-Bxva6JgA.js} +1 -1
- package/ui-dist/assets/{kanban-definition-27J2QSJJ-zgEPcbHl.js → kanban-definition-27J2QSJJ-B2HpN34Q.js} +1 -1
- package/ui-dist/assets/{linear-BVf5VtLS.js → linear-Dq8qSESw.js} +1 -1
- package/ui-dist/assets/{mermaid.core-D2TFkGfI.js → mermaid.core-Ikay8Cpl.js} +35 -35
- package/ui-dist/assets/{mindmap-definition-FAOFIHXS-xoAQ0Lb_.js → mindmap-definition-FAOFIHXS-C-SIdYSY.js} +1 -1
- package/ui-dist/assets/{pegDiagram-VL7TDLO6-CBR1PWLr.js → pegDiagram-VL7TDLO6-C7rIJ_13.js} +1 -1
- package/ui-dist/assets/{pieDiagram-7S7Q4E2Y-BMPnzK_e.js → pieDiagram-7S7Q4E2Y-3gx0a0ve.js} +1 -1
- package/ui-dist/assets/{quadrantDiagram-CIZ2JOQS-CPtVUPkR.js → quadrantDiagram-CIZ2JOQS-BiwM9QGv.js} +1 -1
- package/ui-dist/assets/{railroadDiagram-AXF67PYL-DC0lsZV1.js → railroadDiagram-AXF67PYL-rFS8XcFA.js} +1 -1
- package/ui-dist/assets/{requirementDiagram-LRYGKXZP-BF6k05SB.js → requirementDiagram-LRYGKXZP-CEAUDUTQ.js} +1 -1
- package/ui-dist/assets/{sankeyDiagram-W5VNT64P-CRN0ibiP.js → sankeyDiagram-W5VNT64P-B7anpjlM.js} +1 -1
- package/ui-dist/assets/{sequenceDiagram-SI44F4Z6-CQtTiPWm.js → sequenceDiagram-SI44F4Z6-CJEdJvm_.js} +1 -1
- package/ui-dist/assets/{sizeCapture-X5ZJPWSS-BdjuGZd1.js → sizeCapture-X5ZJPWSS-CU1Vm6c1.js} +1 -1
- package/ui-dist/assets/{stateDiagram-OKZ733FA-B99onxyh.js → stateDiagram-OKZ733FA-wxVV9WIi.js} +1 -1
- package/ui-dist/assets/stateDiagram-v2-UEYNNEHI-BIFLqlqR.js +1 -0
- package/ui-dist/assets/{swimlanes-SLNWSIFB-BIByPbrL.js → swimlanes-SLNWSIFB-Cd-C1Z_k.js} +2 -2
- package/ui-dist/assets/swimlanesDiagram-ULZ7WXOC-CoBROkkd.js +8 -0
- package/ui-dist/assets/{timeline-definition-Z64GVDOM-I1NgOcn9.js → timeline-definition-Z64GVDOM-SWngk4aR.js} +1 -1
- package/ui-dist/assets/{vennDiagram-T6HMQDX7-D6t2Njcl.js → vennDiagram-T6HMQDX7-DFdPUr36.js} +1 -1
- package/ui-dist/assets/{wardleyDiagram-T6FBY63Y-BiYKm9gh.js → wardleyDiagram-T6FBY63Y-C6IlrZ7t.js} +1 -1
- package/ui-dist/assets/{xychartDiagram-ELKLHX3M-BhwXKWIa.js → xychartDiagram-ELKLHX3M-BNm6hHGl.js} +1 -1
- package/ui-dist/index.html +2 -2
- package/ui-dist/assets/architectureDiagram-T3A2C74G-Dg4MziOm.js +0 -36
- package/ui-dist/assets/channel-qoSYbCn0.js +0 -1
- package/ui-dist/assets/classDiagram-JCYQIIEL-B24u1REs.js +0 -1
- package/ui-dist/assets/classDiagram-v2-OCEON4UE-B24u1REs.js +0 -1
- package/ui-dist/assets/cose-bilkent-JH36ORCC-Do8pe8JB.js +0 -1
- package/ui-dist/assets/ganttDiagram-PKOTCBZU-CE3lyvFq.js +0 -292
- package/ui-dist/assets/index-BHiUiToL.css +0 -1
- package/ui-dist/assets/index-hkanj4t6.js +0 -1
- package/ui-dist/assets/index-yRJnh4vx.js +0 -1
- package/ui-dist/assets/stateDiagram-v2-UEYNNEHI-bzFlYBZ1.js +0 -1
- package/ui-dist/assets/swimlanesDiagram-ULZ7WXOC-DgdkBnuK.js +0 -8
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
// The descriptor-bound credential read helper. The server runs it in the sandbox
|
|
2
|
+
// as `node -e <this file> <sessionHome> <maxBytes> [<expectedUid>]`. The sandbox
|
|
3
|
+
// already runs node for the Paperclip bridge, so the helper needs no extra
|
|
4
|
+
// runtime.
|
|
5
|
+
//
|
|
6
|
+
// The helper closes the time-of-check-to-time-of-use (TOCTOU) window. It opens
|
|
7
|
+
// the filesystem root, then opens each session-home path component in turn with a
|
|
8
|
+
// no-follow, directory-only open, relative to the previous directory descriptor. A
|
|
9
|
+
// symlink at any component fails the walk. Node has no `openat`, so the helper
|
|
10
|
+
// opens each next component through `/proc/self/fd/<dfd>/<component>`: the kernel
|
|
11
|
+
// resolves the magic descriptor link, then applies `O_NOFOLLOW` to the final
|
|
12
|
+
// component. This binds each open to the descriptor inode, not to a re-resolved
|
|
13
|
+
// pathname, so it matches an `openat` walk.
|
|
14
|
+
//
|
|
15
|
+
// The helper opens `auth.json` relative to the final directory descriptor with
|
|
16
|
+
// `O_NOFOLLOW`, runs `fstat` on that one descriptor, and reads only from it. The
|
|
17
|
+
// `fstat` check requires a regular file, the expected owner, exact mode `0600`,
|
|
18
|
+
// and a size at or below the bound. The helper never re-opens the pathname after
|
|
19
|
+
// the check.
|
|
20
|
+
//
|
|
21
|
+
// Security: the helper prints only the base64 of the credential bytes on the
|
|
22
|
+
// fully validated success path. It prints one fixed error token on stderr on every
|
|
23
|
+
// failed path. It never prints the pathname, the raw bytes, or any other detail.
|
|
24
|
+
|
|
25
|
+
"use strict";
|
|
26
|
+
|
|
27
|
+
const fs = require("node:fs");
|
|
28
|
+
|
|
29
|
+
const NAME = "auth.json";
|
|
30
|
+
const home = process.argv[1];
|
|
31
|
+
const max = Number.parseInt(process.argv[2], 10);
|
|
32
|
+
const expectedUid =
|
|
33
|
+
process.argv[3] !== undefined ? Number.parseInt(process.argv[3], 10) : process.getuid();
|
|
34
|
+
|
|
35
|
+
function fail() {
|
|
36
|
+
process.stderr.write("AUTH_READ_FAILED\n");
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (!Number.isInteger(max) || max <= 0) fail();
|
|
41
|
+
if (typeof home !== "string" || !home.startsWith("/")) fail();
|
|
42
|
+
const parts = home.split("/").filter((component) => component.length > 0);
|
|
43
|
+
if (parts.length === 0) fail();
|
|
44
|
+
|
|
45
|
+
// Open each component with a no-follow, directory-only open relative to the
|
|
46
|
+
// previous descriptor. A symlink or a non-directory at any component throws, so
|
|
47
|
+
// the read fails closed and never leaves the trusted tree.
|
|
48
|
+
let dfd;
|
|
49
|
+
try {
|
|
50
|
+
dfd = fs.openSync("/", fs.constants.O_RDONLY | fs.constants.O_DIRECTORY);
|
|
51
|
+
} catch {
|
|
52
|
+
fail();
|
|
53
|
+
}
|
|
54
|
+
for (const part of parts) {
|
|
55
|
+
try {
|
|
56
|
+
dfd = fs.openSync(
|
|
57
|
+
`/proc/self/fd/${dfd}/${part}`,
|
|
58
|
+
fs.constants.O_RDONLY | fs.constants.O_DIRECTORY | fs.constants.O_NOFOLLOW,
|
|
59
|
+
);
|
|
60
|
+
} catch {
|
|
61
|
+
fail();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Open the credential relative to the final directory descriptor with a no-follow
|
|
66
|
+
// open, so a symlink credential fails and a missing credential fails.
|
|
67
|
+
let ffd;
|
|
68
|
+
try {
|
|
69
|
+
ffd = fs.openSync(`/proc/self/fd/${dfd}/${NAME}`, fs.constants.O_RDONLY | fs.constants.O_NOFOLLOW);
|
|
70
|
+
} catch {
|
|
71
|
+
fail();
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Validate the opened descriptor, then read only from it.
|
|
75
|
+
const st = fs.fstatSync(ffd);
|
|
76
|
+
if (!st.isFile()) fail();
|
|
77
|
+
if (st.uid !== expectedUid) fail();
|
|
78
|
+
if ((st.mode & 0o7777) !== 0o600) fail();
|
|
79
|
+
if (st.size > max) fail();
|
|
80
|
+
|
|
81
|
+
const buffer = Buffer.allocUnsafe(65536);
|
|
82
|
+
const chunks = [];
|
|
83
|
+
let total = 0;
|
|
84
|
+
for (;;) {
|
|
85
|
+
const read = fs.readSync(ffd, buffer, 0, buffer.length, null);
|
|
86
|
+
if (read === 0) break;
|
|
87
|
+
chunks.push(Buffer.from(buffer.subarray(0, read)));
|
|
88
|
+
total += read;
|
|
89
|
+
if (total > max) fail();
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
process.stdout.write(Buffer.concat(chunks).toString("base64"));
|
|
93
|
+
process.exit(0);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Db } from "@paperclipai/db";
|
|
2
|
+
import { type AuthorizationActor } from "./authorization.js";
|
|
3
|
+
type ResolvableSecretProposal = {
|
|
4
|
+
kind: string;
|
|
5
|
+
targetId: string | null;
|
|
6
|
+
};
|
|
7
|
+
export declare function assertCanResolveProposal(input: {
|
|
8
|
+
db: Db;
|
|
9
|
+
actor: AuthorizationActor;
|
|
10
|
+
companyId: string;
|
|
11
|
+
proposal: ResolvableSecretProposal;
|
|
12
|
+
assertSecretDefinitionAdmin?: () => void;
|
|
13
|
+
}): Promise<void>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=secret-proposal-authorization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-proposal-authorization.d.ts","sourceRoot":"","sources":["../../src/services/secret-proposal-authorization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAG1C,OAAO,EAA8B,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEzF,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,wBAAsB,wBAAwB,CAAC,KAAK,EAAE;IACpD,EAAE,EAAE,EAAE,CAAC;IACP,KAAK,EAAE,kBAAkB,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,wBAAwB,CAAC;IACnC,2BAA2B,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1C,iBAwBA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { forbidden, unprocessable } from "../errors.js";
|
|
2
|
+
import { accessService } from "./access.js";
|
|
3
|
+
import { authorizationDeniedDetails } from "./authorization.js";
|
|
4
|
+
export async function assertCanResolveProposal(input) {
|
|
5
|
+
if (input.proposal.kind === "secret") {
|
|
6
|
+
if (!input.assertSecretDefinitionAdmin) {
|
|
7
|
+
throw forbidden("Company admin access required");
|
|
8
|
+
}
|
|
9
|
+
input.assertSecretDefinitionAdmin();
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
if (input.proposal.kind !== "binding" || !input.proposal.targetId) {
|
|
13
|
+
throw unprocessable("Binding proposal target is missing");
|
|
14
|
+
}
|
|
15
|
+
const decision = await accessService(input.db).decide({
|
|
16
|
+
actor: input.actor,
|
|
17
|
+
action: "agent_config:update",
|
|
18
|
+
resource: {
|
|
19
|
+
type: "agent",
|
|
20
|
+
companyId: input.companyId,
|
|
21
|
+
agentId: input.proposal.targetId,
|
|
22
|
+
},
|
|
23
|
+
scope: { requiresChangeGrant: true },
|
|
24
|
+
});
|
|
25
|
+
if (!decision.allowed) {
|
|
26
|
+
throw forbidden(decision.explanation, authorizationDeniedDetails(decision));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=secret-proposal-authorization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-proposal-authorization.js","sourceRoot":"","sources":["../../src/services/secret-proposal-authorization.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAA2B,MAAM,oBAAoB,CAAC;AAOzF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,KAM9C;IACC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC;YACvC,MAAM,SAAS,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QACD,KAAK,CAAC,2BAA2B,EAAE,CAAC;QACpC,OAAO;IACT,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAClE,MAAM,aAAa,CAAC,oCAAoC,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;QACpD,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,qBAAqB;QAC7B,QAAQ,EAAE;YACR,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ;SACjC;QACD,KAAK,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE;KACrC,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { issueService } from "./issues.js";
|
|
2
|
+
import { type IssueAssignmentWakeupDeps } from "./issue-assignment-wakeup.js";
|
|
3
|
+
type ProposalResolutionNotification = {
|
|
4
|
+
originIssueId: string | null;
|
|
5
|
+
kind: string;
|
|
6
|
+
proposedName: string | null;
|
|
7
|
+
configPath: string | null;
|
|
8
|
+
};
|
|
9
|
+
export declare function notifySecretProposalResolution(input: {
|
|
10
|
+
proposal: ProposalResolutionNotification;
|
|
11
|
+
status: "approved" | "rejected";
|
|
12
|
+
userId: string;
|
|
13
|
+
reason?: string | null;
|
|
14
|
+
issues: Pick<ReturnType<typeof issueService>, "getById" | "addComment">;
|
|
15
|
+
heartbeat: IssueAssignmentWakeupDeps;
|
|
16
|
+
}): Promise<void>;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=secret-proposal-notifications.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-proposal-notifications.d.ts","sourceRoot":"","sources":["../../src/services/secret-proposal-notifications.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,8BAA8B,CAAC;AAEtC,KAAK,8BAA8B,GAAG;IACpC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,wBAAsB,8BAA8B,CAAC,KAAK,EAAE;IAC1D,QAAQ,EAAE,8BAA8B,CAAC;IACzC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC,CAAC;IACxE,SAAS,EAAE,yBAAyB,CAAC;CACtC,iBAuCA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { logger } from "../middleware/logger.js";
|
|
2
|
+
import { queueIssueAssignmentWakeup, } from "./issue-assignment-wakeup.js";
|
|
3
|
+
export async function notifySecretProposalResolution(input) {
|
|
4
|
+
if (!input.proposal.originIssueId)
|
|
5
|
+
return;
|
|
6
|
+
try {
|
|
7
|
+
const issue = await input.issues.getById(input.proposal.originIssueId);
|
|
8
|
+
if (!issue)
|
|
9
|
+
return;
|
|
10
|
+
const subject = input.proposal.kind === "secret"
|
|
11
|
+
? `secret proposal \`${input.proposal.proposedName ?? "unnamed"}\``
|
|
12
|
+
: `binding proposal \`${input.proposal.configPath ?? "unknown"}\``;
|
|
13
|
+
const configPath = input.proposal.kind === "binding"
|
|
14
|
+
? `\n- New config path: \`${input.proposal.configPath ?? "unknown"}\`\n- Verify: \`GET /api/agents/me/secrets\``
|
|
15
|
+
: "";
|
|
16
|
+
const reason = input.reason ? `\n\nReason: ${input.reason}` : "";
|
|
17
|
+
try {
|
|
18
|
+
await input.issues.addComment(issue.id, `Secret proposal resolution\n\n- Proposal: ${subject}\n- Status: **${input.status}**${configPath}${reason}`, { userId: input.userId });
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
logger.warn({ err, issueId: issue.id, proposalStatus: input.status }, "failed to post secret proposal resolution comment");
|
|
22
|
+
}
|
|
23
|
+
await queueIssueAssignmentWakeup({
|
|
24
|
+
heartbeat: input.heartbeat,
|
|
25
|
+
issue,
|
|
26
|
+
reason: "secret_proposal_resolved",
|
|
27
|
+
mutation: `secret_proposal_${input.status}`,
|
|
28
|
+
contextSource: "secret.proposal.resolution",
|
|
29
|
+
requestedByActorType: "user",
|
|
30
|
+
requestedByActorId: input.userId,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
logger.warn({ err, issueId: input.proposal.originIssueId, proposalStatus: input.status }, "failed to notify origin issue about secret proposal resolution");
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=secret-proposal-notifications.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-proposal-notifications.js","sourceRoot":"","sources":["../../src/services/secret-proposal-notifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EACL,0BAA0B,GAE3B,MAAM,8BAA8B,CAAC;AAStC,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,KAOpD;IACC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa;QAAE,OAAO;IAC1C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ;YAC9C,CAAC,CAAC,qBAAqB,KAAK,CAAC,QAAQ,CAAC,YAAY,IAAI,SAAS,IAAI;YACnE,CAAC,CAAC,sBAAsB,KAAK,CAAC,QAAQ,CAAC,UAAU,IAAI,SAAS,IAAI,CAAC;QACrE,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS;YAClD,CAAC,CAAC,0BAA0B,KAAK,CAAC,QAAQ,CAAC,UAAU,IAAI,SAAS,8CAA8C;YAChH,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,MAAM,CAAC,UAAU,CAC3B,KAAK,CAAC,EAAE,EACR,6CAA6C,OAAO,iBAAiB,KAAK,CAAC,MAAM,KAAK,UAAU,GAAG,MAAM,EAAE,EAC3G,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CACzB,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CACT,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,EAAE,EACxD,mDAAmD,CACpD,CAAC;QACJ,CAAC;QACD,MAAM,0BAA0B,CAAC;YAC/B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,KAAK;YACL,MAAM,EAAE,0BAA0B;YAClC,QAAQ,EAAE,mBAAmB,KAAK,CAAC,MAAM,EAAE;YAC3C,aAAa,EAAE,4BAA4B;YAC3C,oBAAoB,EAAE,MAAM;YAC5B,kBAAkB,EAAE,KAAK,CAAC,MAAM;SACjC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CACT,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,EAAE,EAC5E,gEAAgE,CACjE,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -32,6 +32,7 @@ export declare function createSecretProposalsService(db: Db): {
|
|
|
32
32
|
proposedByAgentId: string;
|
|
33
33
|
originIssueId: string | null;
|
|
34
34
|
originRunId: string;
|
|
35
|
+
interactionId: string | null;
|
|
35
36
|
resolvedByUserId: string | null;
|
|
36
37
|
resolvedAt: Date | null;
|
|
37
38
|
resolutionReason: string | null;
|
|
@@ -69,17 +70,18 @@ export declare function createSecretProposalsService(db: Db): {
|
|
|
69
70
|
updatedAt: Date;
|
|
70
71
|
resolvedAt: Date | null;
|
|
71
72
|
secretId: string | null;
|
|
73
|
+
interactionId: string | null;
|
|
72
74
|
expiresAt: Date;
|
|
75
|
+
configPath: string | null;
|
|
76
|
+
justification: string;
|
|
73
77
|
resolvedByUserId: string | null;
|
|
74
78
|
projectionClass: string;
|
|
75
79
|
targetType: string | null;
|
|
76
80
|
targetId: string | null;
|
|
77
|
-
configPath: string | null;
|
|
78
81
|
originIssueId: string | null;
|
|
79
82
|
proposedName: string | null;
|
|
80
83
|
proposedKey: string | null;
|
|
81
84
|
proposedDescription: string | null;
|
|
82
|
-
justification: string;
|
|
83
85
|
valueFingerprintSha256: string | null;
|
|
84
86
|
valueLength: number | null;
|
|
85
87
|
secretProposalId: string | null;
|
|
@@ -105,17 +107,18 @@ export declare function createSecretProposalsService(db: Db): {
|
|
|
105
107
|
updatedAt: Date;
|
|
106
108
|
resolvedAt: Date | null;
|
|
107
109
|
secretId: string | null;
|
|
110
|
+
interactionId: string | null;
|
|
108
111
|
expiresAt: Date;
|
|
112
|
+
configPath: string | null;
|
|
113
|
+
justification: string;
|
|
109
114
|
resolvedByUserId: string | null;
|
|
110
115
|
projectionClass: string;
|
|
111
116
|
targetType: string | null;
|
|
112
117
|
targetId: string | null;
|
|
113
|
-
configPath: string | null;
|
|
114
118
|
originIssueId: string | null;
|
|
115
119
|
proposedName: string | null;
|
|
116
120
|
proposedKey: string | null;
|
|
117
121
|
proposedDescription: string | null;
|
|
118
|
-
justification: string;
|
|
119
122
|
valueCiphertext: Record<string, unknown> | null;
|
|
120
123
|
valueFingerprintSha256: string | null;
|
|
121
124
|
valueLength: number | null;
|
|
@@ -131,6 +134,7 @@ export declare function createSecretProposalsService(db: Db): {
|
|
|
131
134
|
}>;
|
|
132
135
|
createBinding: (context: Pick<ProposalRunContext, "companyId" | "heartbeatRunId">, input: {
|
|
133
136
|
secretId?: string | null;
|
|
137
|
+
sourceConfigPath?: string | null;
|
|
134
138
|
secretProposalId?: string | null;
|
|
135
139
|
targetAgentId?: string | null;
|
|
136
140
|
configPath: string;
|
|
@@ -146,17 +150,18 @@ export declare function createSecretProposalsService(db: Db): {
|
|
|
146
150
|
updatedAt: Date;
|
|
147
151
|
resolvedAt: Date | null;
|
|
148
152
|
secretId: string | null;
|
|
153
|
+
interactionId: string | null;
|
|
149
154
|
expiresAt: Date;
|
|
155
|
+
configPath: string | null;
|
|
156
|
+
justification: string;
|
|
150
157
|
resolvedByUserId: string | null;
|
|
151
158
|
projectionClass: string;
|
|
152
159
|
targetType: string | null;
|
|
153
160
|
targetId: string | null;
|
|
154
|
-
configPath: string | null;
|
|
155
161
|
originIssueId: string | null;
|
|
156
162
|
proposedName: string | null;
|
|
157
163
|
proposedKey: string | null;
|
|
158
164
|
proposedDescription: string | null;
|
|
159
|
-
justification: string;
|
|
160
165
|
valueCiphertext: Record<string, unknown> | null;
|
|
161
166
|
valueFingerprintSha256: string | null;
|
|
162
167
|
valueLength: number | null;
|
|
@@ -200,17 +205,18 @@ export declare function createSecretProposalsService(db: Db): {
|
|
|
200
205
|
updatedAt: Date;
|
|
201
206
|
resolvedAt: Date | null;
|
|
202
207
|
secretId: string | null;
|
|
208
|
+
interactionId: string | null;
|
|
203
209
|
expiresAt: Date;
|
|
210
|
+
configPath: string | null;
|
|
211
|
+
justification: string;
|
|
204
212
|
resolvedByUserId: string | null;
|
|
205
213
|
projectionClass: string;
|
|
206
214
|
targetType: string | null;
|
|
207
215
|
targetId: string | null;
|
|
208
|
-
configPath: string | null;
|
|
209
216
|
originIssueId: string | null;
|
|
210
217
|
proposedName: string | null;
|
|
211
218
|
proposedKey: string | null;
|
|
212
219
|
proposedDescription: string | null;
|
|
213
|
-
justification: string;
|
|
214
220
|
valueFingerprintSha256: string | null;
|
|
215
221
|
valueLength: number | null;
|
|
216
222
|
secretProposalId: string | null;
|
|
@@ -250,17 +256,18 @@ export declare function createSecretProposalsService(db: Db): {
|
|
|
250
256
|
updatedAt: Date;
|
|
251
257
|
resolvedAt: Date | null;
|
|
252
258
|
secretId: string | null;
|
|
259
|
+
interactionId: string | null;
|
|
253
260
|
expiresAt: Date;
|
|
261
|
+
configPath: string | null;
|
|
262
|
+
justification: string;
|
|
254
263
|
resolvedByUserId: string | null;
|
|
255
264
|
projectionClass: string;
|
|
256
265
|
targetType: string | null;
|
|
257
266
|
targetId: string | null;
|
|
258
|
-
configPath: string | null;
|
|
259
267
|
originIssueId: string | null;
|
|
260
268
|
proposedName: string | null;
|
|
261
269
|
proposedKey: string | null;
|
|
262
270
|
proposedDescription: string | null;
|
|
263
|
-
justification: string;
|
|
264
271
|
valueFingerprintSha256: string | null;
|
|
265
272
|
valueLength: number | null;
|
|
266
273
|
secretProposalId: string | null;
|
|
@@ -279,6 +286,7 @@ export declare function createSecretProposalsService(db: Db): {
|
|
|
279
286
|
description?: string | null;
|
|
280
287
|
providerConfigId?: string | null;
|
|
281
288
|
};
|
|
289
|
+
assertCanResolve?: (proposal: Proposal, txDb: Db) => Promise<void>;
|
|
282
290
|
}) => Promise<{
|
|
283
291
|
id: string;
|
|
284
292
|
companyId: string;
|
|
@@ -303,6 +311,7 @@ export declare function createSecretProposalsService(db: Db): {
|
|
|
303
311
|
proposedByAgentId: string;
|
|
304
312
|
originIssueId: string | null;
|
|
305
313
|
originRunId: string;
|
|
314
|
+
interactionId: string | null;
|
|
306
315
|
resolvedByUserId: string | null;
|
|
307
316
|
resolvedAt: Date | null;
|
|
308
317
|
resolutionReason: string | null;
|
|
@@ -341,6 +350,7 @@ export declare function createSecretProposalsService(db: Db): {
|
|
|
341
350
|
proposedByAgentId: string;
|
|
342
351
|
originIssueId: string | null;
|
|
343
352
|
originRunId: string;
|
|
353
|
+
interactionId: string | null;
|
|
344
354
|
resolvedByUserId: string | null;
|
|
345
355
|
resolvedAt: Date | null;
|
|
346
356
|
resolutionReason: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secret-proposals.d.ts","sourceRoot":"","sources":["../../src/services/secret-proposals.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"secret-proposals.d.ts","sourceRoot":"","sources":["../../src/services/secret-proposals.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAGL,sBAAsB,EAOvB,MAAM,iBAAiB,CAAC;AAiBzB,MAAM,MAAM,4BAA4B,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AAE7F,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D,CAAC;AAEF,KAAK,QAAQ,GAAG,OAAO,sBAAsB,CAAC,YAAY,CAAC;AA0C3D,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,EAAE;yBACf,MAAM,cAAc,MAAM,aAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA+Y1C,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAtKH,kBAAkB,SAAS;QAC9D,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;KACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAsCqC,IAAI,CAAC,kBAAkB,EAAE,WAAW,GAAG,gBAAgB,CAAC,SAAS;QACrG,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,mBAAmB,EAAE,kBAAkB,CAAC;KACzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BA0JY,MAAM,WACR,MAAM,YACN;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAejC,MAAM,WACR,MAAM,GAAG,IAAI,YACb;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CAWQ,QAAQ,aAAY,EAAE;yBAsK1C,MAAM,cAAc,MAAM,SAAS;QACnE,gBAAgB,EAAE,MAAM,CAAC;QACzB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC;QAC7F,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KACpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAkDoC,MAAM,cAAc,MAAM,UAAU,OAAO,CAAC,4BAA4B,EAAE,UAAU,CAAC,UAAS;QACjI,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gEAgFiB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC;EAsB9E"}
|