@pellux/goodvibes-sdk 0.35.0 → 0.37.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.
Files changed (112) hide show
  1. package/README.md +11 -1
  2. package/dist/contracts/artifacts/operator-contract.json +1 -1
  3. package/dist/events/agents.d.ts +14 -0
  4. package/dist/events/agents.d.ts.map +1 -1
  5. package/dist/events/index.d.ts +1 -1
  6. package/dist/events/index.d.ts.map +1 -1
  7. package/dist/events/turn.d.ts +17 -0
  8. package/dist/events/turn.d.ts.map +1 -1
  9. package/dist/events/workflows.d.ts +8 -0
  10. package/dist/events/workflows.d.ts.map +1 -1
  11. package/dist/platform/acp/connection.d.ts +16 -0
  12. package/dist/platform/acp/connection.d.ts.map +1 -1
  13. package/dist/platform/acp/connection.js +17 -0
  14. package/dist/platform/agents/orchestrator-runner.d.ts +1 -1
  15. package/dist/platform/agents/orchestrator-runner.d.ts.map +1 -1
  16. package/dist/platform/agents/orchestrator-runner.js +3 -21
  17. package/dist/platform/agents/orchestrator.d.ts.map +1 -1
  18. package/dist/platform/agents/orchestrator.js +3 -2
  19. package/dist/platform/agents/worktree.d.ts +11 -1
  20. package/dist/platform/agents/worktree.d.ts.map +1 -1
  21. package/dist/platform/agents/worktree.js +48 -14
  22. package/dist/platform/agents/wrfc-config.d.ts +23 -0
  23. package/dist/platform/agents/wrfc-config.d.ts.map +1 -1
  24. package/dist/platform/agents/wrfc-config.js +24 -0
  25. package/dist/platform/agents/wrfc-controller.d.ts +49 -1
  26. package/dist/platform/agents/wrfc-controller.d.ts.map +1 -1
  27. package/dist/platform/agents/wrfc-controller.js +261 -12
  28. package/dist/platform/agents/wrfc-types.d.ts +48 -1
  29. package/dist/platform/agents/wrfc-types.d.ts.map +1 -1
  30. package/dist/platform/config/schema-domain-core.d.ts +3 -0
  31. package/dist/platform/config/schema-domain-core.d.ts.map +1 -1
  32. package/dist/platform/config/schema-domain-core.js +24 -0
  33. package/dist/platform/config/schema-types.d.ts +6 -2
  34. package/dist/platform/config/schema-types.d.ts.map +1 -1
  35. package/dist/platform/core/compaction-sections.d.ts +8 -0
  36. package/dist/platform/core/compaction-sections.d.ts.map +1 -1
  37. package/dist/platform/core/compaction-sections.js +71 -2
  38. package/dist/platform/core/context-compaction.d.ts +13 -0
  39. package/dist/platform/core/context-compaction.d.ts.map +1 -1
  40. package/dist/platform/core/context-compaction.js +24 -2
  41. package/dist/platform/core/conversation.d.ts.map +1 -1
  42. package/dist/platform/core/conversation.js +8 -3
  43. package/dist/platform/core/orchestrator-context-runtime.d.ts.map +1 -1
  44. package/dist/platform/core/orchestrator-context-runtime.js +1 -2
  45. package/dist/platform/core/orchestrator-tool-runtime.d.ts.map +1 -1
  46. package/dist/platform/core/orchestrator-tool-runtime.js +30 -2
  47. package/dist/platform/core/orchestrator-turn-loop.d.ts.map +1 -1
  48. package/dist/platform/core/orchestrator-turn-loop.js +18 -1
  49. package/dist/platform/permissions/manager.d.ts.map +1 -1
  50. package/dist/platform/permissions/manager.js +3 -2
  51. package/dist/platform/permissions/prompt.d.ts +8 -1
  52. package/dist/platform/permissions/prompt.d.ts.map +1 -1
  53. package/dist/platform/permissions/types.d.ts +6 -0
  54. package/dist/platform/permissions/types.d.ts.map +1 -1
  55. package/dist/platform/providers/anthropic-compat.js +2 -2
  56. package/dist/platform/providers/anthropic-sdk-provider.js +1 -1
  57. package/dist/platform/providers/anthropic.js +2 -2
  58. package/dist/platform/providers/gemini.js +2 -2
  59. package/dist/platform/providers/interface.d.ts +9 -1
  60. package/dist/platform/providers/interface.d.ts.map +1 -1
  61. package/dist/platform/providers/llama-cpp.js +1 -1
  62. package/dist/platform/providers/lm-studio.js +1 -1
  63. package/dist/platform/providers/ollama.js +1 -1
  64. package/dist/platform/providers/openai-codex.js +1 -1
  65. package/dist/platform/providers/openai-compat.d.ts.map +1 -1
  66. package/dist/platform/providers/openai-compat.js +2 -2
  67. package/dist/platform/providers/openai.js +2 -2
  68. package/dist/platform/runtime/emitters/agents.d.ts +2 -0
  69. package/dist/platform/runtime/emitters/agents.d.ts.map +1 -1
  70. package/dist/platform/runtime/emitters/turn.d.ts +9 -0
  71. package/dist/platform/runtime/emitters/turn.d.ts.map +1 -1
  72. package/dist/platform/runtime/emitters/turn.js +4 -0
  73. package/dist/platform/runtime/emitters/workflows.d.ts +1 -0
  74. package/dist/platform/runtime/emitters/workflows.d.ts.map +1 -1
  75. package/dist/platform/runtime/services.d.ts +2 -0
  76. package/dist/platform/runtime/services.d.ts.map +1 -1
  77. package/dist/platform/runtime/services.js +15 -0
  78. package/dist/platform/runtime/store/domains/agents.d.ts +7 -0
  79. package/dist/platform/runtime/store/domains/agents.d.ts.map +1 -1
  80. package/dist/platform/runtime/store/helpers/reducers/lifecycle.d.ts.map +1 -1
  81. package/dist/platform/runtime/store/helpers/reducers/lifecycle.js +3 -0
  82. package/dist/platform/runtime/tools/phases/execute.d.ts.map +1 -1
  83. package/dist/platform/runtime/tools/phases/execute.js +11 -1
  84. package/dist/platform/tools/exec/runtime.d.ts.map +1 -1
  85. package/dist/platform/tools/exec/runtime.js +9 -0
  86. package/dist/platform/tools/index.d.ts +1 -0
  87. package/dist/platform/tools/index.d.ts.map +1 -1
  88. package/dist/platform/tools/shared/overflow.d.ts.map +1 -1
  89. package/dist/platform/tools/shared/overflow.js +21 -2
  90. package/dist/platform/types/errors.d.ts +26 -0
  91. package/dist/platform/types/errors.d.ts.map +1 -1
  92. package/dist/platform/types/errors.js +63 -1
  93. package/dist/platform/utils/retry.d.ts +4 -2
  94. package/dist/platform/utils/retry.d.ts.map +1 -1
  95. package/dist/platform/utils/retry.js +4 -2
  96. package/dist/platform/version.js +1 -1
  97. package/dist/platform/workspace/checkpoint/index.d.ts +9 -0
  98. package/dist/platform/workspace/checkpoint/index.d.ts.map +1 -0
  99. package/dist/platform/workspace/checkpoint/index.js +7 -0
  100. package/dist/platform/workspace/checkpoint/manager.d.ts +163 -0
  101. package/dist/platform/workspace/checkpoint/manager.d.ts.map +1 -0
  102. package/dist/platform/workspace/checkpoint/manager.js +473 -0
  103. package/dist/platform/workspace/checkpoint/side-git.d.ts +117 -0
  104. package/dist/platform/workspace/checkpoint/side-git.d.ts.map +1 -0
  105. package/dist/platform/workspace/checkpoint/side-git.js +254 -0
  106. package/dist/platform/workspace/checkpoint/types.d.ts +96 -0
  107. package/dist/platform/workspace/checkpoint/types.d.ts.map +1 -0
  108. package/dist/platform/workspace/checkpoint/types.js +20 -0
  109. package/dist/platform/workspace/index.d.ts +1 -0
  110. package/dist/platform/workspace/index.d.ts.map +1 -1
  111. package/dist/platform/workspace/index.js +1 -0
  112. package/package.json +9 -9
@@ -1,5 +1,6 @@
1
1
  import { join } from 'node:path';
2
2
  import { logger } from '../utils/logger.js';
3
+ import { summarizeError } from '../utils/error-display.js';
3
4
  import { ConfigManager } from '../config/manager.js';
4
5
  import { SecretsManager } from '../config/secrets.js';
5
6
  import { ServiceRegistry } from '../config/service-registry.js';
@@ -23,6 +24,7 @@ import { ArchetypeLoader } from '../agents/archetypes.js';
23
24
  import { ProcessManager } from '../tools/shared/process-manager.js';
24
25
  import { ModeManager } from '../state/mode-manager.js';
25
26
  import { FileUndoManager } from '../state/file-undo.js';
27
+ import { WorkspaceCheckpointManager } from '../workspace/checkpoint/index.js';
26
28
  import { MemoryRegistry } from '../state/memory-registry.js';
27
29
  import { MemoryStore } from '../state/memory-store.js';
28
30
  import { createDomainDispatch } from './store/index.js';
@@ -374,6 +376,17 @@ export function createRuntimeServices(options) {
374
376
  const processManager = new ProcessManager();
375
377
  const modeManager = new ModeManager({ featureFlags });
376
378
  const fileUndoManager = new FileUndoManager();
379
+ const workspaceCheckpointManager = new WorkspaceCheckpointManager({
380
+ workspaceRoot: workingDirectory,
381
+ runtimeBus: options.runtimeBus,
382
+ });
383
+ // Eagerly initialize so automatic turn/agent-run snapshot subscriptions are
384
+ // wired up immediately rather than only on first explicit use — otherwise
385
+ // the very first TURN_COMPLETED/AGENT_COMPLETED could arrive before any
386
+ // caller has touched the manager.
387
+ void workspaceCheckpointManager.init().catch((err) => {
388
+ logger.warn('WorkspaceCheckpointManager.init failed', { error: summarizeError(err) });
389
+ });
377
390
  const integrationHelpers = new IntegrationHelperService({
378
391
  workingDirectory,
379
392
  homeDirectory,
@@ -505,6 +518,7 @@ export function createRuntimeServices(options) {
505
518
  processManager,
506
519
  modeManager,
507
520
  fileUndoManager,
521
+ workspaceCheckpointManager,
508
522
  integrationHelpers,
509
523
  async rerootStores(newWorkingDir) {
510
524
  // Step 1: Re-root MemoryStore — close existing SQLite/vector handles, reopen at new path.
@@ -531,6 +545,7 @@ export function createRuntimeServices(options) {
531
545
  'overflowHandler (baseDir fixed at init)',
532
546
  'replayEngine (workingDirectory fixed at init)',
533
547
  'planManager (workingDirectory fixed at init)',
548
+ 'workspaceCheckpointManager (side git GIT_DIR fixed at init)',
534
549
  ];
535
550
  for (const name of cannotReroot) {
536
551
  logger.warn('[rerootStores] subsystem requires restart to reroot', { subsystem: name, newWorkingDir });
@@ -3,6 +3,7 @@
3
3
  * Agents domain state — tracks all spawned agent sessions including
4
4
  * subagents, WRFC chain agents, and orchestrator agents.
5
5
  */
6
+ import type { AgentUsage } from '../../../../events/agents.js';
6
7
  /** States for the agent lifecycle machine. */
7
8
  export type AgentLifecycleState = 'spawning' | 'running' | 'awaiting_message' | 'awaiting_tool' | 'finalizing' | 'completed' | 'failed' | 'cancelled';
8
9
  /** Classification of the agent's role. */
@@ -46,6 +47,12 @@ export interface RuntimeAgent {
46
47
  turnCount: number;
47
48
  /** Number of tool calls made by this agent. */
48
49
  toolCallCount: number;
50
+ /**
51
+ * Accumulated token usage for this agent's run. Undefined means no usage
52
+ * data has landed yet — never fabricated as zeros (honest-UX: an agent
53
+ * that hasn't reported usage is distinct from one that used zero tokens).
54
+ */
55
+ usage?: AgentUsage | undefined;
49
56
  /** Latest accumulated output from the agent (for live display). */
50
57
  latestOutput: string;
51
58
  /** Latest progress string emitted by the agent. */
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../../../src/platform/runtime/store/domains/agents.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF;;;GAGG;AAEH,8CAA8C;AAC9C,MAAM,MAAM,mBAAmB,GAC3B,UAAU,GACV,SAAS,GACT,kBAAkB,GAClB,eAAe,GACf,YAAY,GACZ,WAAW,GACX,QAAQ,GACR,WAAW,CAAC;AAEhB,0CAA0C;AAC1C,MAAM,MAAM,SAAS,GACjB,cAAc,GACd,UAAU,GACV,UAAU,GACV,OAAO,GACP,YAAY,GACZ,YAAY,GACZ,UAAU,GACV,YAAY,CAAC;AAEjB,iDAAiD;AACjD,MAAM,WAAW,YAAY;IAC3B,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,SAAS,EAAE,OAAO,GAAG,cAAc,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,CAAC;IACpG,4FAA4F;IAC5F,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,IAAI,EAAE,SAAS,CAAC;IAChB,+BAA+B;IAC/B,MAAM,EAAE,mBAAmB,CAAC;IAG5B,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAGhB,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,2CAA2C;IAC3C,aAAa,EAAE,MAAM,EAAE,CAAC;IAGxB,qEAAqE;IACrE,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAGnC,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAG5B,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,aAAa,EAAE,MAAM,CAAC;IAGtB,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAGpC,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAG7B,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAG3B,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAE/B,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IAGf,0CAA0C;IAC1C,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAClC,qDAAqD;IACrD,cAAc,EAAE,MAAM,EAAE,CAAC;IAGzB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,gBAAgB,CAY3D"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../../../src/platform/runtime/store/domains/agents.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../../../../src/platform/runtime/store/helpers/reducers/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAChH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EACV,qBAAqB,EAGtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnG,OAAO,KAAK,EACV,wBAAwB,EAGzB,MAAM,gCAAgC,CAAC;AA+BxC,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,eAAe,GACrB,kBAAkB,CAyBpB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,qBAAqB,EAC7B,KAAK,EAAE,eAAe,GACrB,qBAAqB,CAmCvB;AAiCD,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,GAAG,eAAe,CA0D1F;AAED,iBAAS,0BAA0B,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAQ/G;AAED,iBAAS,0BAA0B,CACjC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,SAAS,EACvC,MAAM,EAAE,MAAM,GACb,eAAe,CAIjB;AAkED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,GAAG,gBAAgB,CAgF9F;AAED,iBAAS,2BAA2B,CAClC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,SAAS,EACxC,MAAM,EAAE,MAAM,GACb,gBAAgB,CAYlB;AAmBD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,kBAAkB,GACxB,wBAAwB,CA4G1B;AAED,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,CAAC"}
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../../../../src/platform/runtime/store/helpers/reducers/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAChH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EACV,qBAAqB,EAGtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnG,OAAO,KAAK,EACV,wBAAwB,EAGzB,MAAM,gCAAgC,CAAC;AA+BxC,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,eAAe,GACrB,kBAAkB,CAyBpB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,qBAAqB,EAC7B,KAAK,EAAE,eAAe,GACrB,qBAAqB,CAmCvB;AAiCD,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,GAAG,eAAe,CA0D1F;AAED,iBAAS,0BAA0B,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAQ/G;AAED,iBAAS,0BAA0B,CACjC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,SAAS,EACvC,MAAM,EAAE,MAAM,GACb,eAAe,CAIjB;AAkED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,GAAG,gBAAgB,CAoF9F;AAED,iBAAS,2BAA2B,CAClC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,SAAS,EACxC,MAAM,EAAE,MAAM,GACb,gBAAgB,CAYlB;AAmBD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,kBAAkB,GACxB,wBAAwB,CA4G1B;AAED,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,CAAC"}
@@ -294,6 +294,9 @@ export function updateAgentState(domain, event) {
294
294
  toolCallCount: event.type === 'AGENT_COMPLETED' && event.toolCallsMade !== undefined
295
295
  ? event.toolCallsMade
296
296
  : agent.toolCallCount,
297
+ usage: event.type === 'AGENT_COMPLETED' && event.usage !== undefined
298
+ ? event.usage
299
+ : agent.usage,
297
300
  result: event.type === 'AGENT_COMPLETED'
298
301
  ? {
299
302
  durationMs: event.durationMs,
@@ -1 +1 @@
1
- {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../../../src/platform/runtime/tools/phases/execute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAMpF;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,mBAAmB,EAC3B,MAAM,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,WAAW,GAAG;IAAE,UAAU,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC,CA4CpD"}
1
+ {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../../../src/platform/runtime/tools/phases/execute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAMpF;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,mBAAmB,EAC3B,MAAM,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,WAAW,GAAG;IAAE,UAAU,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC,CAuDpD"}
@@ -16,7 +16,17 @@ export async function executePhase(call, tool, context, record, config) {
16
16
  const start = performance.now();
17
17
  const effectiveArgs = record._updatedArgs ?? call.arguments;
18
18
  // Resolve timeout: per-phase override → budget → default
19
- const timeoutMs = config?.phaseTimeouts?.['executing'] ?? context.budget?.maxMs ?? DEFAULT_EXECUTE_TIMEOUT_MS;
19
+ let timeoutMs = config?.phaseTimeouts?.['executing'] ?? context.budget?.maxMs ?? DEFAULT_EXECUTE_TIMEOUT_MS;
20
+ // The exec tool accepts its own `timeout_ms` input for long-running commands
21
+ // (e.g. a full test suite). Never let the phase deadline undercut a caller-
22
+ // requested exec timeout — otherwise the phase times out the call while the
23
+ // underlying command legitimately still has time left to run.
24
+ if (call.name === 'exec') {
25
+ const requestedTimeoutMs = effectiveArgs['timeout_ms'];
26
+ if (typeof requestedTimeoutMs === 'number' && requestedTimeoutMs > timeoutMs) {
27
+ timeoutMs = requestedTimeoutMs;
28
+ }
29
+ }
20
30
  let timer;
21
31
  try {
22
32
  // Race between the tool and a timeout; clear the timer regardless of outcome
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/platform/tools/exec/runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAGjD,OAAO,EAAqB,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,KAAK,EAA+B,iBAAiB,EAAiB,MAAM,aAAa,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAse/E;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,iBAAiB,EACzB,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,GAC3D,OAAO,CA2CT;AA8ID,wBAAgB,cAAc,CAC5B,cAAc,EAAE,cAAc,EAC9B,OAAO,GAAE;IACP,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACjF,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CACnD,GACL,IAAI,CAmFN"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/platform/tools/exec/runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAGjD,OAAO,EAAqB,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,KAAK,EAA+B,iBAAiB,EAAiB,MAAM,aAAa,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAse/E;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,iBAAiB,EACzB,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,GAC3D,OAAO,CA2CT;AA8ID,wBAAgB,cAAc,CAC5B,cAAc,EAAE,cAAc,EAC9B,OAAO,GAAE;IACP,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACjF,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CACnD,GACL,IAAI,CA6FN"}
@@ -635,9 +635,18 @@ export function createExecTool(processManager, options = {}) {
635
635
  responseData.file_ops = fileOpResults;
636
636
  if (fileOpWarnings && fileOpWarnings.length > 0)
637
637
  responseData.warnings = fileOpWarnings;
638
+ // Populate a top-level error summary on failure so any consumer keying off
639
+ // `.error` alone (not just `.output`) still gets a coherent signal — the
640
+ // per-command diagnostics remain in `output` in full.
641
+ const failed = results.filter((r) => !r.success);
642
+ const errorSummary = failed.length > 0
643
+ ? `${failed.length} of ${results.length} command(s) failed: `
644
+ + failed.map((r) => `'${r.cmd}'${r.skipped ? ' (skipped)' : ` exit ${r.exit_code}${r.timed_out ? ' (timed out)' : ''}`}`).join('; ')
645
+ : undefined;
638
646
  return {
639
647
  success: allSuccess,
640
648
  output: JSON.stringify(responseData),
649
+ ...(errorSummary ? { error: errorSummary } : {}),
641
650
  ...(fileOpWarnings && fileOpWarnings.length > 0 ? { warnings: fileOpWarnings } : {}),
642
651
  };
643
652
  }
@@ -42,6 +42,7 @@ export { ReadTool } from './read/index.js';
42
42
  export { createWriteTool } from './write/index.js';
43
43
  export { createEditTool } from './edit/index.js';
44
44
  export type { EditToolOptions } from './edit/index.js';
45
+ export type { EditItem, EditInput } from './edit/types.js';
45
46
  export { createFindTool } from './find/index.js';
46
47
  export { createExecTool } from './exec/index.js';
47
48
  export { formatDenialResponse, guardExecCommand } from './exec/ast-guard.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/platform/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/platform/tools/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"overflow.d.ts","sourceRoot":"","sources":["../../../../src/platform/tools/shared/overflow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"overflow.d.ts","sourceRoot":"","sources":["../../../../src/platform/tools/shared/overflow.ts"],"names":[],"mappings":"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"}
@@ -305,6 +305,20 @@ export function createSpillBackend(type = 'file', baseDir) {
305
305
  throw new Error(`Unknown spill backend: ${String(type)}`);
306
306
  }
307
307
  }
308
+ /**
309
+ * headAndTail — keeps the first 20% and last 80% of `budget` characters from
310
+ * `content`, joined by a marker, instead of a head-only slice. The tail is
311
+ * weighted heavier because the most useful part of a long tool output (e.g.
312
+ * a failing test run's summary) is almost always at the end.
313
+ */
314
+ function headAndTail(content, budget) {
315
+ const headChars = Math.floor(budget * 0.2);
316
+ const tailChars = budget - headChars;
317
+ const head = content.slice(0, headChars);
318
+ const tail = content.slice(-tailChars);
319
+ const skipped = content.length - headChars - tailChars;
320
+ return `${head}\n[... ${skipped} chars omitted ...]\n${tail}`;
321
+ }
308
322
  // ─── OverflowHandler ────────────────────────────────────────────────────────
309
323
  /**
310
324
  * Handles large tool output by delegating overflow content to a pluggable
@@ -366,9 +380,14 @@ export class OverflowHandler {
366
380
  logger.info(`[overflow] Backend write error: ${summarizeError(err)}`);
367
381
  entry = null;
368
382
  }
383
+ // Keep head + tail rather than head-only: test runners (bun test, vitest,
384
+ // jest) print their failure summary at the very end of output, so a
385
+ // head-only truncation silently drops the actually-informative part of a
386
+ // long failing run.
387
+ const kept = headAndTail(content, maxChars);
369
388
  if (!entry) {
370
389
  return {
371
- content: content.slice(0, maxChars) + `\n[... truncated at ${maxChars} chars]`,
390
+ content: kept + `\n[... truncated at ${maxChars} chars]`,
372
391
  };
373
392
  }
374
393
  const ref = this.buildRef(filename);
@@ -376,7 +395,7 @@ export class OverflowHandler {
376
395
  ? `Full output: ${ref.replace(/^file:/, '')}`
377
396
  : `Spilled to ${this.backend.type} backend (ref: ${ref})`;
378
397
  return {
379
- content: content.slice(0, maxChars) + `\n[... truncated. ${notice}]`,
398
+ content: kept + `\n[... truncated. ${notice}]`,
380
399
  overflowRef: ref,
381
400
  spillBackend: this.backend.type,
382
401
  };
@@ -79,6 +79,32 @@ export declare function isRateLimitOrQuotaError(err: unknown): boolean;
79
79
  * Covers OpenAI, Anthropic, and generic provider error messages.
80
80
  */
81
81
  export declare function isContextSizeExceededError(err: unknown): boolean;
82
+ /**
83
+ * Returns true when an error message (already reduced to a plain string, e.g. after
84
+ * having crossed an event-bus boundary) looks like a transient network/transport
85
+ * failure. This is a best-effort, message-only heuristic — prefer
86
+ * {@link isNetworkTransportError} whenever the original error object is still
87
+ * available, since it trusts the structured classification instead of guessing
88
+ * from text.
89
+ */
90
+ export declare function isTransportFailureMessage(message: string): boolean;
91
+ /**
92
+ * Returns true when the error indicates a transient network/transport failure
93
+ * (as opposed to a programmer error or a permanent provider rejection).
94
+ *
95
+ * When the error is an `HttpStatusError` (e.g. produced by
96
+ * `createNetworkTransportError` in `@pellux/transport-http`), its structured
97
+ * `category`/`recoverable` fields are trusted directly rather than re-derived
98
+ * from the message text — that classification already accounts for TypeErrors,
99
+ * POSIX network errno codes, and undici `UND_ERR_*` codes. The `instanceof`
100
+ * check is branded (see HttpStatusError's Symbol.hasInstance), so a plain object
101
+ * that merely happens to carry `recoverable`/`category` properties will not be
102
+ * mistaken for one and trigger a false-positive retry.
103
+ *
104
+ * Falls back to {@link isTransportFailureMessage} for errors that are not an
105
+ * HttpStatusError instance.
106
+ */
107
+ export declare function isNetworkTransportError(err: unknown): boolean;
82
108
  /**
83
109
  * Returns true when the error indicates the provider is non-transient
84
110
  * (auth failures, connection refused, host not found, timeout).
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/platform/types/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/platform/types/errors.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { GoodVibesSdkError, RETRYABLE_STATUS_CODES } from '@pellux/goodvibes-errors';
1
+ import { GoodVibesSdkError, HttpStatusError, RETRYABLE_STATUS_CODES } from '@pellux/goodvibes-errors';
2
2
  /** SDK-owned platform module. This implementation is maintained in goodvibes-sdk. */
3
3
  export { RETRYABLE_STATUS_CODES };
4
4
  function inferErrorCategory(message, statusCode) {
@@ -219,6 +219,68 @@ export function isContextSizeExceededError(err) {
219
219
  msg.includes('exceeds the model') ||
220
220
  (msg.includes('context') && msg.includes('exceed')));
221
221
  }
222
+ /**
223
+ * Message substrings that indicate a transient network/transport failure when the
224
+ * error object itself carries no structured classification (e.g. a plain Error
225
+ * surfaced through a code path that doesn't go through transport-http). Kept
226
+ * narrow-ish but includes the bare "socket" and "closed unexpectedly" wording seen
227
+ * in practice for abrupt connection-closure failures that the older, stricter
228
+ * substring list did not recognize.
229
+ */
230
+ const TRANSPORT_FAILURE_MESSAGE_PATTERNS = [
231
+ 'fetch failed',
232
+ 'econnrefused',
233
+ 'enotfound',
234
+ 'network error',
235
+ 'network timeout',
236
+ 'networkerror',
237
+ 'econnreset',
238
+ 'etimedout',
239
+ 'socket hang up',
240
+ 'dns',
241
+ 'connection lost',
242
+ 'epipe',
243
+ 'ehostunreach',
244
+ 'socket connection closure',
245
+ 'closed unexpectedly',
246
+ 'socket',
247
+ ];
248
+ /**
249
+ * Returns true when an error message (already reduced to a plain string, e.g. after
250
+ * having crossed an event-bus boundary) looks like a transient network/transport
251
+ * failure. This is a best-effort, message-only heuristic — prefer
252
+ * {@link isNetworkTransportError} whenever the original error object is still
253
+ * available, since it trusts the structured classification instead of guessing
254
+ * from text.
255
+ */
256
+ export function isTransportFailureMessage(message) {
257
+ const msg = message.toLowerCase();
258
+ return TRANSPORT_FAILURE_MESSAGE_PATTERNS.some((pattern) => msg.includes(pattern));
259
+ }
260
+ /**
261
+ * Returns true when the error indicates a transient network/transport failure
262
+ * (as opposed to a programmer error or a permanent provider rejection).
263
+ *
264
+ * When the error is an `HttpStatusError` (e.g. produced by
265
+ * `createNetworkTransportError` in `@pellux/transport-http`), its structured
266
+ * `category`/`recoverable` fields are trusted directly rather than re-derived
267
+ * from the message text — that classification already accounts for TypeErrors,
268
+ * POSIX network errno codes, and undici `UND_ERR_*` codes. The `instanceof`
269
+ * check is branded (see HttpStatusError's Symbol.hasInstance), so a plain object
270
+ * that merely happens to carry `recoverable`/`category` properties will not be
271
+ * mistaken for one and trigger a false-positive retry.
272
+ *
273
+ * Falls back to {@link isTransportFailureMessage} for errors that are not an
274
+ * HttpStatusError instance.
275
+ */
276
+ export function isNetworkTransportError(err) {
277
+ if (err instanceof HttpStatusError) {
278
+ return err.category === 'network' && err.recoverable === true;
279
+ }
280
+ if (!(err instanceof Error))
281
+ return false;
282
+ return isTransportFailureMessage(err.message);
283
+ }
222
284
  /**
223
285
  * Returns true when the error indicates the provider is non-transient
224
286
  * (auth failures, connection refused, host not found, timeout).
@@ -24,7 +24,9 @@ export declare function isRetryableError(error: unknown): boolean;
24
24
  *
25
25
  * @param fn - Async function to execute.
26
26
  * @param config - Optional overrides for retry behaviour.
27
- * @param onRetry - Optional callback invoked before each retry.
27
+ * @param onRetry - Optional callback invoked before each retry. Argument order
28
+ * (attempt, maxAttempts, delayMs, error) matches `ChatRequest.onRetry` so
29
+ * providers can pass it straight through without an adapter.
28
30
  */
29
- export declare function withRetry<T>(fn: () => Promise<T>, config?: Partial<RetryConfig>, onRetry?: (attempt: number, error: Error, delayMs: number) => void): Promise<T>;
31
+ export declare function withRetry<T>(fn: () => Promise<T>, config?: Partial<RetryConfig>, onRetry?: (attempt: number, maxAttempts: number, delayMs: number, error: Error) => void): Promise<T>;
30
32
  //# sourceMappingURL=retry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../src/platform/utils/retry.ts"],"names":[],"mappings":"AAKA,kEAAkE;AAClE,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAQD,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAOzE;AAED,8EAA8E;AAC9E,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAOjE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAaxD;AASD;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAC7B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GACjE,OAAO,CAAC,CAAC,CAAC,CAyBZ"}
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../src/platform/utils/retry.ts"],"names":[],"mappings":"AAKA,kEAAkE;AAClE,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAQD,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAOzE;AAED,8EAA8E;AAC9E,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAOjE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAaxD;AASD;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAC7B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,GACtF,OAAO,CAAC,CAAC,CAAC,CAyBZ"}
@@ -52,7 +52,9 @@ function computeDelay(attempt, initialDelayMs, maxDelayMs) {
52
52
  *
53
53
  * @param fn - Async function to execute.
54
54
  * @param config - Optional overrides for retry behaviour.
55
- * @param onRetry - Optional callback invoked before each retry.
55
+ * @param onRetry - Optional callback invoked before each retry. Argument order
56
+ * (attempt, maxAttempts, delayMs, error) matches `ChatRequest.onRetry` so
57
+ * providers can pass it straight through without an adapter.
56
58
  */
57
59
  export async function withRetry(fn, config, onRetry) {
58
60
  const cfg = { ...DEFAULT_CONFIG, ...config };
@@ -70,7 +72,7 @@ export async function withRetry(fn, config, onRetry) {
70
72
  throw lastError;
71
73
  }
72
74
  const delayMs = computeDelay(attempt, cfg.initialDelayMs, cfg.maxDelayMs);
73
- onRetry?.(attempt + 1, lastError, delayMs);
75
+ onRetry?.(attempt + 1, cfg.maxRetries, delayMs, lastError);
74
76
  await sleep(delayMs);
75
77
  }
76
78
  }
@@ -1,6 +1,6 @@
1
1
  import { readFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
- let version = '0.35.0';
3
+ let version = '0.37.0';
4
4
  try {
5
5
  const pkg = JSON.parse(readFileSync(join(import.meta.dir, '..', '..', 'package.json'), 'utf-8'));
6
6
  version = pkg.version ?? version;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * checkpoint/index.ts
3
+ *
4
+ * Public barrel for the workspace checkpoint engine.
5
+ */
6
+ export { WorkspaceCheckpointManager, type CreateCheckpointOptions, type RestoreOptions, type ListCheckpointsFilter, type WorkspaceCheckpointManagerOptions, } from './manager.js';
7
+ export type { WorkspaceCheckpoint, CheckpointKind, CheckpointDiff, RestoreResult, } from './types.js';
8
+ export { SideGitRunner, CHECKPOINT_REF_PREFIX, EMPTY_TREE_HASH } from './side-git.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/platform/workspace/checkpoint/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,0BAA0B,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,iCAAiC,GACvC,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * checkpoint/index.ts
3
+ *
4
+ * Public barrel for the workspace checkpoint engine.
5
+ */
6
+ export { WorkspaceCheckpointManager, } from './manager.js';
7
+ export { SideGitRunner, CHECKPOINT_REF_PREFIX, EMPTY_TREE_HASH } from './side-git.js';
@@ -0,0 +1,163 @@
1
+ /**
2
+ * manager.ts
3
+ *
4
+ * WorkspaceCheckpointManager — the coarse, whole-workspace rewind layer.
5
+ *
6
+ * Complements (does not replace) FileUndoManager (../../state/file-undo.ts),
7
+ * which stays as the fine-grained, in-memory, per-file /undo layer. This
8
+ * manager persists across sessions, snapshots the ENTIRE workspace tree, and
9
+ * survives process restarts (backed by git objects + a JSON manifest on
10
+ * disk), which is the wrong shape for FileUndoManager but exactly the shape
11
+ * needed for "revert everything turn N did" or "restore the workspace to how
12
+ * it looked an hour ago".
13
+ *
14
+ * Storage layout (workspace-local, see side-git.ts for the git mechanics):
15
+ * <workspaceRoot>/.goodvibes/checkpoints/git — side GIT_DIR
16
+ * <workspaceRoot>/.goodvibes/checkpoints/index.json — manifest (JsonFileStore)
17
+ *
18
+ * Checkpoint refs live at refs/goodvibes/checkpoints/<id> inside the side
19
+ * repo, entirely separate from the user's real git refs and from compaction's
20
+ * `cpt_` boundary commits (which are conversation snapshots, not filesystem
21
+ * snapshots, and are not stored in git at all — see types.ts's header comment
22
+ * for the full disambiguation).
23
+ *
24
+ * Automatic snapshots subscribe to EXISTING runtime bus events
25
+ * (TURN_COMPLETED / TURN_ERROR / TURN_CANCEL / AGENT_COMPLETED) — no new
26
+ * event contract is introduced by this module.
27
+ */
28
+ import type { RuntimeEventBus } from '../../runtime/events/index.js';
29
+ import { type RetentionConfig, type RetentionClass, type PruneResult } from '../../runtime/retention/index.js';
30
+ import type { WorkspaceCheckpoint, CheckpointKind, CheckpointDiff, RestoreResult } from './types.js';
31
+ export interface CreateCheckpointOptions {
32
+ readonly kind: CheckpointKind;
33
+ readonly label?: string | undefined;
34
+ readonly retentionClass?: RetentionClass | undefined;
35
+ readonly turnId?: string | undefined;
36
+ readonly agentId?: string | undefined;
37
+ /** Scope the snapshot to these paths instead of sweeping the whole workspace. */
38
+ readonly paths?: string[] | undefined;
39
+ }
40
+ export interface RestoreOptions {
41
+ /** Restrict restore to these paths instead of the whole workspace. */
42
+ readonly paths?: string[] | undefined;
43
+ /** Take a safety checkpoint of the current state before restoring. Defaults to true. */
44
+ readonly safetyCheckpoint?: boolean | undefined;
45
+ }
46
+ export interface ListCheckpointsFilter {
47
+ readonly kind?: CheckpointKind | undefined;
48
+ readonly since?: number | undefined;
49
+ readonly limit?: number | undefined;
50
+ }
51
+ export interface WorkspaceCheckpointManagerOptions {
52
+ readonly workspaceRoot: string;
53
+ /** Override the side repo's GIT_DIR. Defaults to `<workspaceRoot>/.goodvibes/checkpoints/git`. */
54
+ readonly checkpointDir?: string | undefined;
55
+ /** When provided, the manager subscribes to TURN_COMPLETED/TURN_ERROR/TURN_CANCEL/AGENT_COMPLETED for automatic snapshots. */
56
+ readonly runtimeBus?: RuntimeEventBus | undefined;
57
+ readonly retention?: Partial<RetentionConfig> | undefined;
58
+ /** Clock override for deterministic tests. */
59
+ readonly now?: (() => number) | undefined;
60
+ }
61
+ /**
62
+ * WorkspaceCheckpointManager — create/list/diff/restore/gc for whole-workspace
63
+ * git-backed snapshots, plus automatic snapshotting on existing turn/agent
64
+ * lifecycle events.
65
+ */
66
+ export declare class WorkspaceCheckpointManager {
67
+ readonly workspaceRoot: string;
68
+ private readonly checkpointRootDir;
69
+ private readonly sideGit;
70
+ private readonly manifestStore;
71
+ private readonly retentionPolicy;
72
+ private readonly now;
73
+ private readonly runtimeBus;
74
+ private readonly unsubscribers;
75
+ private checkpoints;
76
+ private initialized;
77
+ private initPromise;
78
+ constructor(opts: WorkspaceCheckpointManagerOptions);
79
+ /**
80
+ * Idempotent setup: init the side repo, load the manifest (re-hydrating the
81
+ * in-memory RetentionPolicy so retention state survives process restarts),
82
+ * and subscribe to automatic-snapshot events if a runtime bus was provided.
83
+ * Safe to call multiple times; concurrent callers share one in-flight init.
84
+ */
85
+ init(): Promise<void>;
86
+ private _init;
87
+ /**
88
+ * Subscribes to the EXISTING turn/agent lifecycle events — no new event
89
+ * types are introduced. A snapshot is taken at the boundary AFTER each
90
+ * turn/agent-run finishes, meaning "revert everything turn N did" means
91
+ * restoring the checkpoint captured BEFORE turn N, i.e. checkpoint[N-1] in
92
+ * `list()`'s (newest-first) ordering — an intentional off-by-one, documented
93
+ * here rather than hidden: this module always snapshots "where things ended
94
+ * up", never "where things started".
95
+ *
96
+ * Listener bodies are wrapped so a failure NEVER throws back into the bus:
97
+ * `RuntimeEventBus.emit()` only catches synchronous throws from a listener,
98
+ * not rejections from a returned (but un-awaited) promise, so every
99
+ * auto-snapshot call here is deliberately `.catch()`-guarded.
100
+ */
101
+ private subscribeToAutomaticSnapshots;
102
+ /**
103
+ * Create a new checkpoint. Returns `null` (a cheap no-op) when the current
104
+ * workspace tree is identical to the parent checkpoint's tree — no commit,
105
+ * no ref, no manifest entry is created in that case.
106
+ */
107
+ create(opts: CreateCheckpointOptions): Promise<WorkspaceCheckpoint | null>;
108
+ /** List checkpoints, newest-first. `list()[0]` is always the most recent checkpoint. */
109
+ list(filter?: ListCheckpointsFilter): Promise<WorkspaceCheckpoint[]>;
110
+ /**
111
+ * Diff two checkpoints, or a checkpoint against the live working tree when
112
+ * `b` is omitted.
113
+ */
114
+ diff(a: string, b?: string): Promise<CheckpointDiff>;
115
+ /**
116
+ * Restore the workspace to the state captured by checkpoint `id`.
117
+ *
118
+ * By default (`safetyCheckpoint: true`) takes a checkpoint of the CURRENT
119
+ * state first, so a restore is itself undoable via another restore.
120
+ *
121
+ * Whole-workspace restore (no `opts.paths`):
122
+ * 1. Snapshot the current tracked-file set (via the safety checkpoint, or
123
+ * a transient write-tree when `safetyCheckpoint: false`) — this is the
124
+ * "before" set.
125
+ * 2. Reset the side index to the target checkpoint's tree and check every
126
+ * file in it out to disk (re-creates anything the checkpoint had that
127
+ * is currently missing or modified).
128
+ * 3. Remove exactly the files that were in the "before" set but are NOT
129
+ * in the target checkpoint's tree (files created/tracked after the
130
+ * checkpoint). Anything NOT in the "before" set — i.e. any untracked
131
+ * path outside what this engine has ever snapshotted — is never
132
+ * touched, by construction: it never appears in either set.
133
+ *
134
+ * Scoped restore (`opts.paths` provided) only checks out those paths from
135
+ * the target tree; it never removes files outside the given paths.
136
+ */
137
+ restore(id: string, opts?: RestoreOptions): Promise<RestoreResult>;
138
+ /**
139
+ * Apply retention limits: `RetentionPolicy` selects prune candidates,
140
+ * `WorkspaceCheckpointPruner` deletes their refs, then (only if anything
141
+ * was actually deleted) a single `git gc --prune=now` reclaims the now-
142
+ * unreachable objects. This never touches compaction's boundary commits —
143
+ * they are tracked in an entirely separate `RetentionPolicy` instance
144
+ * (../../runtime/compaction) with no shared state.
145
+ */
146
+ gc(): Promise<PruneResult>;
147
+ /** Unsubscribe from the runtime bus. Does not touch anything on disk. */
148
+ dispose(): void;
149
+ private mostRecentCheckpoint;
150
+ private requireCheckpoint;
151
+ private defaultLabel;
152
+ /**
153
+ * Approximate incremental bytes introduced by a checkpoint: sum of on-disk
154
+ * sizes of the changed paths, read immediately after they were staged and
155
+ * committed (so they still reflect exactly the content just captured).
156
+ * Deleted paths (no longer on disk) contribute 0. This is deliberately not
157
+ * exact git object-store accounting — it exists for retention's `maxSizeBytes`
158
+ * bookkeeping, not for a byte-perfect audit.
159
+ */
160
+ private computeSizeBytes;
161
+ private persistManifest;
162
+ }
163
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/platform/workspace/checkpoint/manager.ts"],"names":[],"mappings":"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"}