@khoavu882/doflow 2.0.0-beta.4 → 2.0.0-beta.5

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 (101) hide show
  1. package/core/.antigravity-plugin/plugin.json +0 -1
  2. package/core/.claude-plugin/plugin.json +1 -1
  3. package/core/.codex-plugin/plugin.json +1 -1
  4. package/core/.plugin/plugin.json +1 -1
  5. package/core/harnesses/claude/hooks/mcp-tool-guard.sh +7 -17
  6. package/core/harnesses/claude/hooks/pre-bash-guard.sh +7 -17
  7. package/core/harnesses/claude/hooks/pre-implement-gate.sh +7 -18
  8. package/core/harnesses/claude/hooks/session-start.sh +5 -3
  9. package/core/harnesses/claude/hooks/stop-check.sh +5 -3
  10. package/core/harnesses/claude/hooks/subagent-audit.sh +5 -5
  11. package/core/harnesses/claude/hooks/user-prompt-submit.sh +5 -3
  12. package/core/harnesses/codex/hooks/mcp-tool-guard.sh +7 -15
  13. package/core/harnesses/codex/hooks/pre-bash-guard.sh +7 -15
  14. package/core/harnesses/codex/hooks/pre-implement-gate.sh +7 -16
  15. package/core/harnesses/codex/hooks/session-start.sh +5 -3
  16. package/core/harnesses/codex/hooks/stop-check.sh +6 -5
  17. package/core/harnesses/codex/hooks/subagent-audit.sh +17 -6
  18. package/core/harnesses/codex/hooks/user-prompt-submit.sh +5 -4
  19. package/core/harnesses/gemini/hooks/mcp-tool-guard.sh +7 -18
  20. package/core/harnesses/gemini/hooks/pre-bash-guard.sh +7 -18
  21. package/core/harnesses/gemini/hooks/pre-implement-gate.sh +7 -19
  22. package/core/harnesses/gemini/hooks/session-start.sh +5 -3
  23. package/core/harnesses/kiro/hooks/mcp-tool-guard.sh +20 -5
  24. package/core/harnesses/kiro/hooks/pre-bash-guard.sh +20 -5
  25. package/core/harnesses/kiro/hooks/pre-implement-gate.sh +20 -5
  26. package/core/harnesses/kiro/hooks/session-start.sh +11 -5
  27. package/core/harnesses/kiro/hooks/stop-check.sh +21 -30
  28. package/core/harnesses/pi/extensions/doflow-guard.js +159 -0
  29. package/core/harnesses/shared/hooks/ENVELOPE_MIGRATION.md +27 -11
  30. package/core/harnesses/shared/hooks/adapters/antigravity.js +14 -57
  31. package/core/harnesses/shared/hooks/bridge/bridge.sh +184 -0
  32. package/core/harnesses/shared/hooks/bridge/envelope.jq +60 -0
  33. package/core/harnesses/shared/hooks/bridge/respond.sh +62 -0
  34. package/core/harnesses/shared/hooks/policies/capture-failure.sh +4 -2
  35. package/core/harnesses/shared/hooks/policies/contract.sh +75 -0
  36. package/core/harnesses/shared/hooks/policies/deny-json.sh +39 -4
  37. package/core/harnesses/shared/hooks/policies/lib.sh +4 -2
  38. package/core/harnesses/shared/hooks/policies/mcp-tool-guard.sh +46 -34
  39. package/core/harnesses/shared/hooks/policies/pre-bash-guard.sh +75 -25
  40. package/core/harnesses/shared/hooks/policies/pre-implementation-gate.sh +67 -73
  41. package/core/harnesses/shared/hooks/policies/session-context.sh +37 -7
  42. package/core/harnesses/shared/hooks/policies/stop-check.sh +42 -15
  43. package/core/harnesses/shared/hooks/policies/subagent-audit.sh +35 -5
  44. package/core/harnesses/shared/hooks/policies/user-prompt-submit.sh +40 -7
  45. package/core/harnesses/shared/hooks/stream-hook-runner.js +69 -181
  46. package/core/registry/assets.json +19 -0
  47. package/core/registry/contracts.json +2 -2
  48. package/core/registry/harnesses.json +196 -10
  49. package/core/registry/lifecycle.json +2626 -7
  50. package/core/registry/storage.json +24 -1
  51. package/core/shared/scripts/doflow/bin/doflow-run +10 -6
  52. package/core/shared/skills/do-design/SKILL.md +6 -6
  53. package/core/shared/skills/do-execute-plan/SKILL.md +11 -10
  54. package/core/shared/skills/do-execute-plan/references/readiness_gate.md +2 -0
  55. package/core/shared/skills/do-implement/SKILL.md +3 -2
  56. package/core/shared/skills/do-plan/SKILL.md +7 -8
  57. package/package.json +1 -1
  58. package/src/adapters/antigravity/index.js +83 -47
  59. package/src/adapters/claude/index.js +15 -1
  60. package/src/adapters/codex/hooks.js +40 -5
  61. package/src/adapters/codex/index.js +52 -9
  62. package/src/adapters/copy-tree.js +4 -4
  63. package/src/adapters/gemini/hooks.js +57 -16
  64. package/src/adapters/gemini/index.js +57 -18
  65. package/src/adapters/kiro/index.js +15 -1
  66. package/src/adapters/pi/hooks.js +119 -0
  67. package/src/adapters/pi/index.js +34 -9
  68. package/src/cli/commands/install.js +1 -1
  69. package/src/cli/commands/update.js +1 -1
  70. package/src/cli/index.js +17 -5
  71. package/src/cli/runtime-commands.js +51 -12
  72. package/src/lifecycle/coverage.js +57 -0
  73. package/src/lifecycle/hook-step.js +61 -0
  74. package/src/lifecycle/index.js +28 -14
  75. package/src/registry/index.js +136 -7
  76. package/src/runtime/candidate.js +505 -0
  77. package/src/runtime/claims.js +14 -5
  78. package/src/runtime/cli-result.js +11 -4
  79. package/src/runtime/cli.js +35 -268
  80. package/src/runtime/context/budget.js +203 -0
  81. package/src/runtime/context/compose.js +1367 -0
  82. package/src/runtime/context/delivery-store.js +102 -0
  83. package/src/runtime/context/mandatory.js +594 -0
  84. package/src/runtime/context/pointer.js +142 -0
  85. package/src/runtime/context-pack.js +1029 -244
  86. package/src/runtime/evidence-fields.js +39 -0
  87. package/src/runtime/evidence-ledger.js +7 -0
  88. package/src/runtime/freshness.js +44 -7
  89. package/src/runtime/outcome.js +1 -1
  90. package/src/runtime/readiness.js +83 -13
  91. package/src/runtime/retrieval-plan.js +422 -73
  92. package/src/runtime/retrieval-record.js +223 -0
  93. package/src/runtime/scaffold/artifacts.js +3 -0
  94. package/src/runtime/source-version.js +289 -0
  95. package/src/runtime/task-attempts.js +1 -1
  96. package/src/runtime/task-scope.js +28 -3
  97. package/src/runtime/task-state.js +72 -7
  98. package/core/.antigravity-plugin/hooks.json +0 -39
  99. package/core/harnesses/shared/hooks/adapters/arg-fields.js +0 -19
  100. package/core/harnesses/shared/hooks/adapters/gemini.js +0 -114
  101. package/core/harnesses/shared/hooks/hooks.json +0 -47
@@ -223,6 +223,28 @@
223
223
  "verifiedOn": "2026-10-12"
224
224
  }
225
225
  },
226
+ "contextProfile": {
227
+ "capacityTokens": {
228
+ "unverified": "values belong to 085 (A-19)",
229
+ "verifiedOn": "2026-10-13"
230
+ },
231
+ "reserveTokens": {
232
+ "unverified": "values belong to 085 (A-19)",
233
+ "verifiedOn": "2026-10-13"
234
+ },
235
+ "tokenTelemetry": {
236
+ "unverified": "values belong to 085 (A-19)",
237
+ "verifiedOn": "2026-10-13"
238
+ },
239
+ "toolResultLimitBytes": {
240
+ "unverified": "values belong to 085 (A-19)",
241
+ "verifiedOn": "2026-10-13"
242
+ },
243
+ "retention": {
244
+ "unverified": "values belong to 085 (A-19)",
245
+ "verifiedOn": "2026-10-13"
246
+ }
247
+ },
226
248
  "scopePrecedence": {
227
249
  "status": "established",
228
250
  "order": [
@@ -502,6 +524,28 @@
502
524
  "reason": "https://learn.chatgpt.com/docs/agent-configuration/subagents was read on 2026-10-12 and does not state a resume operation; nothing is inferred from another harness or a model name."
503
525
  }
504
526
  },
527
+ "contextProfile": {
528
+ "capacityTokens": {
529
+ "unverified": "values belong to 085 (A-19)",
530
+ "verifiedOn": "2026-10-13"
531
+ },
532
+ "reserveTokens": {
533
+ "unverified": "values belong to 085 (A-19)",
534
+ "verifiedOn": "2026-10-13"
535
+ },
536
+ "tokenTelemetry": {
537
+ "unverified": "values belong to 085 (A-19)",
538
+ "verifiedOn": "2026-10-13"
539
+ },
540
+ "toolResultLimitBytes": {
541
+ "unverified": "values belong to 085 (A-19)",
542
+ "verifiedOn": "2026-10-13"
543
+ },
544
+ "retention": {
545
+ "unverified": "values belong to 085 (A-19)",
546
+ "verifiedOn": "2026-10-13"
547
+ }
548
+ },
505
549
  "scopePrecedence": {
506
550
  "status": "established",
507
551
  "order": [
@@ -735,6 +779,28 @@
735
779
  "reason": "https://geminicli.com/docs/core/subagents was read on 2026-10-12 and does not state a resume operation; nothing is inferred from another harness or a model name."
736
780
  }
737
781
  },
782
+ "contextProfile": {
783
+ "capacityTokens": {
784
+ "unverified": "values belong to 085 (A-19)",
785
+ "verifiedOn": "2026-10-13"
786
+ },
787
+ "reserveTokens": {
788
+ "unverified": "values belong to 085 (A-19)",
789
+ "verifiedOn": "2026-10-13"
790
+ },
791
+ "tokenTelemetry": {
792
+ "unverified": "values belong to 085 (A-19)",
793
+ "verifiedOn": "2026-10-13"
794
+ },
795
+ "toolResultLimitBytes": {
796
+ "unverified": "values belong to 085 (A-19)",
797
+ "verifiedOn": "2026-10-13"
798
+ },
799
+ "retention": {
800
+ "unverified": "values belong to 085 (A-19)",
801
+ "verifiedOn": "2026-10-13"
802
+ }
803
+ },
738
804
  "scopePrecedence": {
739
805
  "status": "established",
740
806
  "order": [
@@ -1015,6 +1081,28 @@
1015
1081
  "reason": "https://opencode.ai/docs/agents was read on 2026-10-12 and does not state a resume operation; nothing is inferred from another harness or a model name."
1016
1082
  }
1017
1083
  },
1084
+ "contextProfile": {
1085
+ "capacityTokens": {
1086
+ "unverified": "values belong to 085 (A-19)",
1087
+ "verifiedOn": "2026-10-13"
1088
+ },
1089
+ "reserveTokens": {
1090
+ "unverified": "values belong to 085 (A-19)",
1091
+ "verifiedOn": "2026-10-13"
1092
+ },
1093
+ "tokenTelemetry": {
1094
+ "unverified": "values belong to 085 (A-19)",
1095
+ "verifiedOn": "2026-10-13"
1096
+ },
1097
+ "toolResultLimitBytes": {
1098
+ "unverified": "values belong to 085 (A-19)",
1099
+ "verifiedOn": "2026-10-13"
1100
+ },
1101
+ "retention": {
1102
+ "unverified": "values belong to 085 (A-19)",
1103
+ "verifiedOn": "2026-10-13"
1104
+ }
1105
+ },
1018
1106
  "scopePrecedence": {
1019
1107
  "status": "established",
1020
1108
  "order": [
@@ -1166,40 +1254,40 @@
1166
1254
  "evidence": [
1167
1255
  "https://pi.dev/docs/latest/extensions"
1168
1256
  ],
1169
- "note": "Pi lifecycle hooks are TypeScript extension modules registered through pi.on(), executing arbitrary code with full permissions — a different trust model from the shell hooks DoFlow ships, so no hook projection is attempted.",
1170
- "verification": "Report that DoFlow installs no Pi extension and its shell hooks do not apply here.",
1257
+ "note": "DoFlow installs a ledger-owned extension at user scope or project scope that registers tool_call through pi.on() and invokes the shared lifecycle bridge. Project scope requires project trust.",
1258
+ "verification": "Verify the installed extension fingerprint, resolved shared bridge path, bash/jq prerequisites, and the project-trust prerequisite for project scope.",
1171
1259
  "events": {
1172
1260
  "SessionStart": {
1173
1261
  "status": "different",
1174
- "note": "DoFlow projects shell hooks; Pi requires a code module, so no hook is installed. Native equivalent: session_start, which carries reason:\"reload\" on /reload."
1262
+ "note": "DoFlow does not project a hook for this event; its separate code extension guards tool_call. Native equivalent: session_start, which carries reason:\"reload\" on /reload."
1175
1263
  },
1176
1264
  "SessionEnd": {
1177
1265
  "status": "different",
1178
- "note": "DoFlow projects shell hooks; Pi requires a code module, so no hook is installed. Native equivalent: session_shutdown."
1266
+ "note": "DoFlow does not project a hook for this event; its separate code extension guards tool_call. Native equivalent: session_shutdown."
1179
1267
  },
1180
1268
  "UserPromptSubmit": {
1181
1269
  "status": "different",
1182
- "note": "DoFlow projects shell hooks; Pi requires a code module, so no hook is installed. Native equivalent: input, which fires before skill expansion. DoFlow's once-per-session `/do` suggestion is not hook-delivered here and reaches this harness through skill descriptions only."
1270
+ "note": "DoFlow does not project a prompt hook; its separate code extension guards tool_call. Native equivalent: input, which fires before skill expansion. DoFlow's once-per-session `/do` suggestion reaches this harness through skill descriptions only."
1183
1271
  },
1184
1272
  "PreCompact": {
1185
1273
  "status": "different",
1186
- "note": "DoFlow projects shell hooks; Pi requires a code module, so no hook is installed. Native equivalent: session_before_compact, which may cancel or supply a summary."
1274
+ "note": "DoFlow does not project a hook for this event; its separate code extension guards tool_call. Native equivalent: session_before_compact, which may cancel or supply a summary."
1187
1275
  },
1188
1276
  "PostCompact": {
1189
1277
  "status": "different",
1190
- "note": "DoFlow projects shell hooks; Pi requires a code module, so no hook is installed. Native equivalent: compaction_end."
1278
+ "note": "DoFlow does not project a hook for this event; its separate code extension guards tool_call. Native equivalent: compaction_end."
1191
1279
  },
1192
1280
  "PreToolUse": {
1193
1281
  "status": "different",
1194
- "note": "DoFlow projects shell hooks; Pi requires a code module, so no hook is installed. Native equivalent: tool_execution_start, exposed through session.subscribe rather than pi.on."
1282
+ "note": "DoFlow's user- or project-scope extension evaluates tool_call before execution; tool_execution_start is observation-only."
1195
1283
  },
1196
1284
  "PostToolUse": {
1197
1285
  "status": "different",
1198
- "note": "DoFlow projects shell hooks; Pi requires a code module, so no hook is installed. Native equivalent: tool_execution_end, exposed through session.subscribe rather than pi.on."
1286
+ "note": "DoFlow does not register Pi tool_execution_end."
1199
1287
  },
1200
1288
  "Stop": {
1201
1289
  "status": "different",
1202
- "note": "DoFlow projects shell hooks; Pi requires a code module, so no hook is installed. Native equivalent: agent_end."
1290
+ "note": "DoFlow does not project a hook for this event; its separate code extension guards tool_call. Native equivalent: agent_end."
1203
1291
  },
1204
1292
  "SubagentStart": {
1205
1293
  "status": "unavailable",
@@ -1285,6 +1373,28 @@
1285
1373
  "reason": "https://github.com/earendil-works/pi/blob/main/packages/coding-agent/README.md states no resume operation; https://pi.dev/docs/latest/extensions states no subagent operation. Nothing is inferred."
1286
1374
  }
1287
1375
  },
1376
+ "contextProfile": {
1377
+ "capacityTokens": {
1378
+ "unverified": "values belong to 085 (A-19)",
1379
+ "verifiedOn": "2026-10-13"
1380
+ },
1381
+ "reserveTokens": {
1382
+ "unverified": "values belong to 085 (A-19)",
1383
+ "verifiedOn": "2026-10-13"
1384
+ },
1385
+ "tokenTelemetry": {
1386
+ "unverified": "values belong to 085 (A-19)",
1387
+ "verifiedOn": "2026-10-13"
1388
+ },
1389
+ "toolResultLimitBytes": {
1390
+ "unverified": "values belong to 085 (A-19)",
1391
+ "verifiedOn": "2026-10-13"
1392
+ },
1393
+ "retention": {
1394
+ "unverified": "values belong to 085 (A-19)",
1395
+ "verifiedOn": "2026-10-13"
1396
+ }
1397
+ },
1288
1398
  "scopePrecedence": {
1289
1399
  "status": "unestablished",
1290
1400
  "evidence": [
@@ -1560,6 +1670,28 @@
1560
1670
  "reason": "https://docs.github.com/en/copilot/reference/copilot-cli-reference/cli-command-reference offers steering of a running subagent from its session view but states no resume of a finished subagent; nothing is inferred."
1561
1671
  }
1562
1672
  },
1673
+ "contextProfile": {
1674
+ "capacityTokens": {
1675
+ "unverified": "values belong to 085 (A-19)",
1676
+ "verifiedOn": "2026-10-13"
1677
+ },
1678
+ "reserveTokens": {
1679
+ "unverified": "values belong to 085 (A-19)",
1680
+ "verifiedOn": "2026-10-13"
1681
+ },
1682
+ "tokenTelemetry": {
1683
+ "unverified": "values belong to 085 (A-19)",
1684
+ "verifiedOn": "2026-10-13"
1685
+ },
1686
+ "toolResultLimitBytes": {
1687
+ "unverified": "values belong to 085 (A-19)",
1688
+ "verifiedOn": "2026-10-13"
1689
+ },
1690
+ "retention": {
1691
+ "unverified": "values belong to 085 (A-19)",
1692
+ "verifiedOn": "2026-10-13"
1693
+ }
1694
+ },
1563
1695
  "scopePrecedence": {
1564
1696
  "status": "established",
1565
1697
  "order": [
@@ -1702,6 +1834,16 @@
1702
1834
  "UserPromptSubmit": {
1703
1835
  "status": "different",
1704
1836
  "note": "Kiro documents a native UserPromptSubmit trigger that is blockable via a non-zero exit code and exposes the prompt as the USER_PROMPT environment variable; DoFlow wires no hook to it. DoFlow's once-per-session `/do` suggestion is not hook-delivered here and reaches this harness through skill descriptions only."
1837
+ },
1838
+ "SessionStart": {
1839
+ "status": "supported"
1840
+ },
1841
+ "PreToolUse": {
1842
+ "status": "supported"
1843
+ },
1844
+ "Stop": {
1845
+ "status": "different",
1846
+ "note": "DoFlow config uses Stop, while Kiro documents AgentStop; native trigger equivalence is unresolved."
1705
1847
  }
1706
1848
  }
1707
1849
  },
@@ -1763,6 +1905,28 @@
1763
1905
  "reason": "https://kiro.dev/docs/custom-agents/subagents/ was read on 2026-10-12 and does not state a resume operation; nothing is inferred from another harness or a model name."
1764
1906
  }
1765
1907
  },
1908
+ "contextProfile": {
1909
+ "capacityTokens": {
1910
+ "unverified": "values belong to 085 (A-19)",
1911
+ "verifiedOn": "2026-10-13"
1912
+ },
1913
+ "reserveTokens": {
1914
+ "unverified": "values belong to 085 (A-19)",
1915
+ "verifiedOn": "2026-10-13"
1916
+ },
1917
+ "tokenTelemetry": {
1918
+ "unverified": "values belong to 085 (A-19)",
1919
+ "verifiedOn": "2026-10-13"
1920
+ },
1921
+ "toolResultLimitBytes": {
1922
+ "unverified": "values belong to 085 (A-19)",
1923
+ "verifiedOn": "2026-10-13"
1924
+ },
1925
+ "retention": {
1926
+ "unverified": "values belong to 085 (A-19)",
1927
+ "verifiedOn": "2026-10-13"
1928
+ }
1929
+ },
1766
1930
  "scopePrecedence": {
1767
1931
  "status": "established",
1768
1932
  "order": [
@@ -2046,6 +2210,28 @@
2046
2210
  "verifiedOn": "2026-10-12"
2047
2211
  }
2048
2212
  },
2213
+ "contextProfile": {
2214
+ "capacityTokens": {
2215
+ "unverified": "values belong to 085 (A-19)",
2216
+ "verifiedOn": "2026-10-13"
2217
+ },
2218
+ "reserveTokens": {
2219
+ "unverified": "values belong to 085 (A-19)",
2220
+ "verifiedOn": "2026-10-13"
2221
+ },
2222
+ "tokenTelemetry": {
2223
+ "unverified": "values belong to 085 (A-19)",
2224
+ "verifiedOn": "2026-10-13"
2225
+ },
2226
+ "toolResultLimitBytes": {
2227
+ "unverified": "values belong to 085 (A-19)",
2228
+ "verifiedOn": "2026-10-13"
2229
+ },
2230
+ "retention": {
2231
+ "unverified": "values belong to 085 (A-19)",
2232
+ "verifiedOn": "2026-10-13"
2233
+ }
2234
+ },
2049
2235
  "scopePrecedence": {
2050
2236
  "status": "unestablished",
2051
2237
  "evidence": [