@tickernelz/paperclip-pro-server 2026.930.1 → 2026.930.3

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.
Files changed (77) hide show
  1. package/dist/build-info.json +1 -1
  2. package/dist/modules/run-dispatch/adapters/postgres.d.ts +5 -1
  3. package/dist/modules/run-dispatch/adapters/postgres.d.ts.map +1 -1
  4. package/dist/modules/run-dispatch/adapters/postgres.js +2 -1
  5. package/dist/modules/run-dispatch/adapters/postgres.js.map +1 -1
  6. package/dist/modules/run-dispatch/index.d.ts +2 -0
  7. package/dist/modules/run-dispatch/index.d.ts.map +1 -1
  8. package/dist/modules/run-dispatch/index.js +1 -1
  9. package/dist/modules/run-dispatch/index.js.map +1 -1
  10. package/dist/modules/wake-queue/adapters/postgres.d.ts.map +1 -1
  11. package/dist/modules/wake-queue/adapters/postgres.js +16 -3
  12. package/dist/modules/wake-queue/adapters/postgres.js.map +1 -1
  13. package/dist/modules/wake-queue/adapters/postgres.test.js +33 -0
  14. package/dist/modules/wake-queue/adapters/postgres.test.js.map +1 -1
  15. package/dist/modules/wake-queue/application/ports.d.ts +3 -0
  16. package/dist/modules/wake-queue/application/ports.d.ts.map +1 -1
  17. package/dist/modules/wake-queue/application/ports.js.map +1 -1
  18. package/dist/modules/wake-queue/application/use-cases.d.ts.map +1 -1
  19. package/dist/modules/wake-queue/application/use-cases.js +6 -3
  20. package/dist/modules/wake-queue/application/use-cases.js.map +1 -1
  21. package/dist/modules/wake-queue/application/use-cases.test.js +52 -2
  22. package/dist/modules/wake-queue/application/use-cases.test.js.map +1 -1
  23. package/dist/routes/issues.d.ts +6 -0
  24. package/dist/routes/issues.d.ts.map +1 -1
  25. package/dist/routes/issues.js +323 -90
  26. package/dist/routes/issues.js.map +1 -1
  27. package/dist/routes/openapi.js +1 -1
  28. package/dist/routes/openapi.js.map +1 -1
  29. package/dist/services/heartbeat.d.ts +1 -0
  30. package/dist/services/heartbeat.d.ts.map +1 -1
  31. package/dist/services/heartbeat.js +100 -20
  32. package/dist/services/heartbeat.js.map +1 -1
  33. package/dist/services/native-runtime/native-session-executor.d.ts +7 -2
  34. package/dist/services/native-runtime/native-session-executor.d.ts.map +1 -1
  35. package/dist/services/native-runtime/native-session-executor.js +35 -14
  36. package/dist/services/native-runtime/native-session-executor.js.map +1 -1
  37. package/dist/services/native-runtime/native-session-executor.test.js +25 -2
  38. package/dist/services/native-runtime/native-session-executor.test.js.map +1 -1
  39. package/dist/services/recovery/service.d.ts +1 -0
  40. package/dist/services/recovery/service.d.ts.map +1 -1
  41. package/dist/services/recovery/service.js +32 -0
  42. package/dist/services/recovery/service.js.map +1 -1
  43. package/dist/services/run-identity.d.ts +1 -0
  44. package/dist/services/run-identity.d.ts.map +1 -1
  45. package/dist/services/run-identity.js +13 -3
  46. package/dist/services/run-identity.js.map +1 -1
  47. package/dist/services/steering-acknowledgements.d.ts +1 -0
  48. package/dist/services/steering-acknowledgements.d.ts.map +1 -1
  49. package/dist/services/steering-acknowledgements.js +6 -0
  50. package/dist/services/steering-acknowledgements.js.map +1 -1
  51. package/dist/services/systemd-notify.d.ts.map +1 -1
  52. package/dist/services/systemd-notify.js +6 -2
  53. package/dist/services/systemd-notify.js.map +1 -1
  54. package/dist/services/systemd-notify.test.d.ts +2 -0
  55. package/dist/services/systemd-notify.test.d.ts.map +1 -0
  56. package/dist/services/systemd-notify.test.js +35 -0
  57. package/dist/services/systemd-notify.test.js.map +1 -0
  58. package/package.json +21 -21
  59. package/skills/paperclip/SKILL.md +3 -1
  60. package/skills/paperclip/references/api-reference.md +2 -0
  61. package/ui-dist/assets/{Agents.production-BDXEK4Q0.js → Agents.production-VItybUXr.js} +2 -2
  62. package/ui-dist/assets/{CompanyActivity.production-AoQ1Xzp6.js → CompanyActivity.production-CwZwgQQV.js} +1 -1
  63. package/ui-dist/assets/{CompanyExport-Bgynl5QC.js → CompanyExport-DD7Rya_d.js} +1 -1
  64. package/ui-dist/assets/{CompanySkills.production-BtKXe0Dw.js → CompanySkills.production-Bwg9FRuw.js} +1 -1
  65. package/ui-dist/assets/{Costs.production-dqa_yTCM.js → Costs.production-lULBU1r3.js} +1 -1
  66. package/ui-dist/assets/{MarkdownEditor-DfrwLv1M.js → MarkdownEditor-BN7aGwIv.js} +1 -1
  67. package/ui-dist/assets/{OrgChart.production-Ca77vSHO.js → OrgChart.production-C7exT9VZ.js} +1 -1
  68. package/ui-dist/assets/{RoutineDetail.production-BBuPjKy1.js → RoutineDetail.production-DsZSvOON.js} +1 -1
  69. package/ui-dist/assets/{RoutineRunVariablesDialog-B1KRZJIl.js → RoutineRunVariablesDialog-DO1hY6dt.js} +1 -1
  70. package/ui-dist/assets/{Routines.production-C5HqDjoO.js → Routines.production-BsmVAcGo.js} +1 -1
  71. package/ui-dist/assets/{checkbox-757DLJRS.js → checkbox-D66RYMkN.js} +1 -1
  72. package/ui-dist/assets/{definition-Cfy5D9lX.js → definition-RMjpvqXu.js} +1 -1
  73. package/ui-dist/assets/{index-B3vYH8Jq.js → index-DU74KtHt.js} +6 -6
  74. package/ui-dist/assets/{label-BueB30Ch.js → label-BjzFqp93.js} +1 -1
  75. package/ui-dist/assets/{sheet-CQJe5sfn.js → sheet-ASM5ba9D.js} +1 -1
  76. package/ui-dist/index.html +6 -6
  77. package/ui-dist/sw.js +1 -1
@@ -124,7 +124,7 @@ vi.mock("../issue-recovery-actions.js", () => ({
124
124
  vi.mock("./native-codex-runner.js", () => ({
125
125
  resolvePaperclipRunnerBinary: state.resolveRunnerBinary,
126
126
  }));
127
- import { continuingPendingInteractionIds, buildNativeProviderEnvironment, buildNativeHarnessBackupManifest, cancelNativeSession, closeWarmNativeSessionsForEnvironment, closeIdleWarmNativeSessionsForRestart, createGovernedWaitEventObservation, createRemoteRunnerProcessLauncher, createRunnerdBackend, executePaperclipNativeSession, detachNativeSessionsForRestart, NativeControllerDetachedForRestartError, getNativeSessionSteeringState, NativeSessionSteeringError, assertRemoteRunnerBuildMetadata, nativeSessionFailureDisposition, nativeFailedRunRetryStateIsSafe, verifyStoppedNativeSessionForContinuation, nativePreProviderRetryAfterCleanupStateIsSafe, reconcileRetainedNativeSessionCleanup, retainedNativeCleanupJournalMatches, nativeProviderUsageLimitFromEvent, nativeSessionFailureSourceCode, nativeSessionRecoveryProjection, nativeGovernedWaitResult, nativeConversationReplyResult, nativeToolsRefreshWaitResult, parseRemoteExecutableCandidate, buildRemoteCodexLauncherCommand, mayUsePreinstalledRunnerArtifact, nativeUsageCostUsd, normalizeNativeUsage, parseRemoteRunnerProcessIdentity, REMOTE_RUNNER_CHILD_LAUNCH_SCRIPT, verifyRemoteRunnerReattachment, readRemoteProviderPackManifest, providerSessionIdentityFromDurableProviderState, providerSessionIdentityTransitionIsAllowed, providerPlanMarkdown, remoteCheckpointIncompleteFailure, resolveRemoteRunnerTransportMode, renewNativeSessionExecutionLease, runtimeInputLifecycleMetric, firstMeaningfulAgentEventKind, runtimeQuestionFallbackFromEvent, resolveNativeRuntimeRequest, resolveNativeHarnessPersistenceProfile, runnerdStateProvesIncompleteBootstrap, semanticProviderPlanMarkdown, sha256DirectoryTree, stageRemoteRunnerDirectory, steerNativeSession, hasLiveAdapterSteering, syncRemoteRunnerDirectoryOut, verifyNativeHarnessBackup, shouldRestoreNativeHarnessBackupIntoSandbox, } from "./native-session-executor.js";
127
+ import { continuingPendingInteractionIds, buildNativeProviderEnvironment, buildNativeHarnessBackupManifest, cancelNativeSession, closeWarmNativeSessionsForEnvironment, closeIdleWarmNativeSessionsForRestart, createGovernedWaitEventObservation, createRemoteRunnerProcessLauncher, createRunnerdBackend, executePaperclipNativeSession, detachNativeSessionsForRestart, NativeControllerDetachedForRestartError, getNativeSessionSteeringState, NativeSessionSteeringError, assertRemoteRunnerBuildMetadata, nativeSessionFailureDisposition, nativeFailedRunRetryStateIsSafe, verifyStoppedNativeSessionForContinuation, nativePreProviderRetryAfterCleanupStateIsSafe, reconcileRetainedNativeSessionCleanup, retainedNativeCleanupJournalMatches, nativeProviderUsageLimitFromEvent, nativeSessionFailureSourceCode, nativeSessionRecoveryProjection, nativeGovernedWaitResult, nativeConversationReplyResult, nativeToolsRefreshWaitResult, parseRemoteExecutableCandidate, buildRemoteCodexLauncherCommand, mayUsePreinstalledRunnerArtifact, nativeUsageCostUsd, normalizeNativeUsage, parseRemoteRunnerProcessIdentity, REMOTE_RUNNER_CHILD_LAUNCH_SCRIPT, verifyRemoteRunnerReattachment, readRemoteProviderPackManifest, providerSessionIdentityFromDurableProviderState, providerSessionIdentityTransitionIsAllowed, providerPlanMarkdown, remoteCheckpointIncompleteFailure, resolveRemoteRunnerTransportMode, renewNativeSessionExecutionLease, runtimeInputLifecycleMetric, firstMeaningfulAgentEventKind, runtimeQuestionFallbackFromEvent, resolveNativeRuntimeRequest, resolveNativeHarnessPersistenceProfile, runnerdStateProvesIncompleteBootstrap, semanticProviderPlanMarkdown, sha256DirectoryTree, stageRemoteRunnerDirectory, steerNativeSession, STEERING_PROVIDER_ACK_GRACE_MS, hasLiveAdapterSteering, syncRemoteRunnerDirectoryOut, verifyNativeHarnessBackup, shouldRestoreNativeHarnessBackupIntoSandbox, } from "./native-session-executor.js";
128
128
  beforeEach(() => {
129
129
  state.resolveRunnerBinary.mockReset().mockReturnValue("/tmp/paperclip-runnerd");
130
130
  state.resolveCurrentWakeCommentsBinding.mockReset().mockResolvedValue(null);
@@ -4520,18 +4520,39 @@ describe("native session same-turn steering", () => {
4520
4520
  label: "unsupported provider",
4521
4521
  prepare: () => capabilities.mockResolvedValue({ steering: false }),
4522
4522
  code: "steering_unsupported",
4523
+ detail: null,
4523
4524
  },
4524
4525
  {
4525
4526
  label: "stale turn",
4526
4527
  prepare: () => snapshot.mockResolvedValue({ activeTurnId: null }),
4527
4528
  code: "steering_stale_turn",
4529
+ detail: null,
4528
4530
  },
4529
4531
  {
4530
4532
  label: "provider rejection",
4531
4533
  prepare: () => steer.mockRejectedValue(new Error("request rejected")),
4532
4534
  code: "steering_rejected",
4535
+ detail: "request rejected",
4533
4536
  },
4534
- ])("keeps $label retryable with a stable code", async ({ prepare, code }) => {
4537
+ {
4538
+ label: "provider-side acknowledgement timeout",
4539
+ prepare: () => steer.mockRejectedValue(new Error("omp_rpc_steer_timeout")),
4540
+ code: "steering_timeout",
4541
+ detail: "omp_rpc_steer_timeout",
4542
+ },
4543
+ {
4544
+ label: "closed provider input",
4545
+ prepare: () => steer.mockRejectedValue(new Error("live_stdin_channel_closed")),
4546
+ code: "steering_temporarily_unavailable",
4547
+ detail: "live_stdin_channel_closed",
4548
+ },
4549
+ {
4550
+ label: "provider without a steer method",
4551
+ prepare: () => steer.mockRejectedValue(new Error("steering is unavailable: method not found")),
4552
+ code: "steering_unsupported",
4553
+ detail: "steering is unavailable: method not found",
4554
+ },
4555
+ ])("keeps $label retryable with a stable code", async ({ prepare, code, detail }) => {
4535
4556
  prepare();
4536
4557
  const { running } = await startActiveSession();
4537
4558
  const error = await steerNativeSession({
@@ -4541,6 +4562,7 @@ describe("native session same-turn steering", () => {
4541
4562
  }).catch((value) => value);
4542
4563
  expect(error).toBeInstanceOf(NativeSessionSteeringError);
4543
4564
  expect(error.code).toBe(code);
4565
+ expect(error.detail).toBe(detail);
4544
4566
  state.release?.();
4545
4567
  await running;
4546
4568
  });
@@ -4582,6 +4604,7 @@ describe("native session same-turn steering", () => {
4582
4604
  turnId: "omp-rpc-turn:adapter",
4583
4605
  message: { role: "user", text: "Steer through the adapter" },
4584
4606
  correlationId: "adapter-comment-1",
4607
+ ackTimeoutMs: 10_000 + STEERING_PROVIDER_ACK_GRACE_MS,
4585
4608
  });
4586
4609
  }
4587
4610
  finally {