@hassangameryt/freeflow 0.5.0 → 0.6.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 (284) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/README.md +148 -154
  5. package/capabilities/cognitive-routing/SKILL.md +229 -0
  6. package/capabilities/context-virtualization/SKILL.md +103 -0
  7. package/capabilities/conversation-history/SKILL.md +53 -0
  8. package/command-surface.json +6 -13
  9. package/hooks/freeflow-runtime-context.mjs +35 -91
  10. package/hooks/tests/check-runtime-context-hook.sh +56 -39
  11. package/package.json +24 -16
  12. package/pi-extension/dist/cognitive-routing/commands.js +96 -0
  13. package/pi-extension/dist/cognitive-routing/config.js +236 -0
  14. package/pi-extension/dist/cognitive-routing/controller.js +862 -0
  15. package/pi-extension/dist/cognitive-routing/history.js +439 -0
  16. package/pi-extension/dist/cognitive-routing/host.js +126 -0
  17. package/pi-extension/dist/cognitive-routing/runtime.js +43 -0
  18. package/pi-extension/dist/cognitive-routing/tool.js +211 -0
  19. package/pi-extension/dist/cognitive-routing/types.js +6 -0
  20. package/pi-extension/dist/context-virtualization/commands.js +89 -0
  21. package/pi-extension/dist/context-virtualization/projector.js +42 -0
  22. package/pi-extension/dist/context-virtualization/runtime.js +356 -0
  23. package/pi-extension/dist/context-virtualization/state.js +57 -0
  24. package/pi-extension/dist/context-virtualization/types.js +10 -0
  25. package/pi-extension/dist/conversation-history/passages.js +66 -0
  26. package/pi-extension/dist/conversation-history/ranking.js +105 -0
  27. package/pi-extension/dist/conversation-history/runtime.js +226 -0
  28. package/pi-extension/dist/conversation-history/search.js +56 -0
  29. package/pi-extension/dist/conversation-history/types.js +1 -0
  30. package/pi-extension/dist/freeflow-context/resolver.js +120 -0
  31. package/pi-extension/dist/freeflow-context/runtime.js +80 -0
  32. package/pi-extension/dist/freeflow-context/source-projector.js +95 -0
  33. package/pi-extension/dist/freeflow-context/tool.js +308 -0
  34. package/pi-extension/dist/freeflow-context/types.js +12 -0
  35. package/pi-extension/dist/freeflow-context/visibility.js +28 -0
  36. package/pi-extension/dist/index.js +516 -98
  37. package/pi-extension/dist/runtime/runtime-context.js +318 -271
  38. package/pi-extension/dist/runtime/runtime-identity.js +5 -0
  39. package/pi-extension/dist/settings/settings-tui.js +78 -0
  40. package/pi-extension/dist/settings/settings-ui.js +593 -563
  41. package/pi-extension/dist/ui/text-component.js +57 -0
  42. package/pi-extension/src/cognitive-routing/commands.ts +119 -0
  43. package/pi-extension/src/cognitive-routing/config.ts +307 -0
  44. package/pi-extension/src/cognitive-routing/controller.ts +1118 -0
  45. package/pi-extension/src/cognitive-routing/history.ts +638 -0
  46. package/pi-extension/src/cognitive-routing/host.ts +172 -0
  47. package/pi-extension/src/cognitive-routing/runtime.ts +57 -0
  48. package/pi-extension/src/cognitive-routing/tool.ts +272 -0
  49. package/pi-extension/src/cognitive-routing/types.ts +89 -0
  50. package/pi-extension/src/context-virtualization/commands.ts +111 -0
  51. package/pi-extension/src/context-virtualization/projector.ts +62 -0
  52. package/pi-extension/src/context-virtualization/runtime.ts +406 -0
  53. package/pi-extension/src/context-virtualization/state.ts +79 -0
  54. package/pi-extension/src/context-virtualization/types.ts +92 -0
  55. package/pi-extension/src/conversation-history/passages.ts +81 -0
  56. package/pi-extension/src/conversation-history/ranking.ts +155 -0
  57. package/pi-extension/src/conversation-history/runtime.ts +250 -0
  58. package/pi-extension/src/conversation-history/search.ts +79 -0
  59. package/pi-extension/src/conversation-history/types.ts +31 -0
  60. package/pi-extension/src/freeflow-context/resolver.ts +139 -0
  61. package/pi-extension/src/freeflow-context/runtime.ts +100 -0
  62. package/pi-extension/src/freeflow-context/source-projector.ts +106 -0
  63. package/pi-extension/src/freeflow-context/tool.ts +360 -0
  64. package/pi-extension/src/freeflow-context/types.ts +70 -0
  65. package/pi-extension/src/freeflow-context/visibility.ts +53 -0
  66. package/pi-extension/src/index.ts +553 -101
  67. package/pi-extension/src/runtime/runtime-context.ts +339 -281
  68. package/pi-extension/src/runtime/runtime-identity.ts +8 -0
  69. package/pi-extension/src/settings/settings-tui.ts +93 -0
  70. package/pi-extension/src/settings/settings-ui.ts +700 -613
  71. package/pi-extension/src/ui/text-component.ts +66 -0
  72. package/pi-extension/tests/cognitive-routing/commands.test.js +134 -0
  73. package/pi-extension/tests/cognitive-routing/controller.test.js +1099 -0
  74. package/pi-extension/tests/cognitive-routing/extension-lifecycle.test.js +1071 -0
  75. package/pi-extension/tests/cognitive-routing/history.test.js +274 -0
  76. package/pi-extension/tests/cognitive-routing/host-fixture.js +4 -0
  77. package/pi-extension/tests/cognitive-routing/host-identity.test.js +63 -0
  78. package/pi-extension/tests/cognitive-routing/profile-resolution.test.js +236 -0
  79. package/pi-extension/tests/cognitive-routing/tool.test.js +230 -0
  80. package/pi-extension/tests/context-virtualization/extension.test.js +749 -0
  81. package/pi-extension/tests/context-virtualization/projector.test.js +110 -0
  82. package/pi-extension/tests/context-virtualization/runtime.test.js +216 -0
  83. package/pi-extension/tests/conversation-history/runtime.test.js +98 -0
  84. package/pi-extension/tests/conversation-history/search.test.js +97 -0
  85. package/pi-extension/tests/integration/pi-extension.test.js +927 -2048
  86. package/pi-extension/tests/integration/prompt-architecture.test.js +305 -0
  87. package/runtime/prompts/cognitive-routing.md +9 -0
  88. package/runtime/prompts/context-virtualization.md +3 -0
  89. package/runtime/prompts/conversation-history.md +3 -0
  90. package/runtime/prompts/core.md +13 -0
  91. package/runtime/prompts/interaction-contract.md +7 -0
  92. package/runtime/prompts/skills.md +65 -0
  93. package/skills/action-selection/SKILL.md +91 -0
  94. package/skills/bypass/SKILL.md +3 -2
  95. package/skills/commit-work/SKILL.md +1 -1
  96. package/skills/commit-work/references/staging-decisions.md +1 -1
  97. package/skills/decision-gate/SKILL.md +1 -1
  98. package/skills/design-for-depth/SKILL.md +14 -33
  99. package/skills/design-for-depth/references/design-pressure-signals.md +1 -1
  100. package/skills/design-for-depth/references/interface-design-loop.md +1 -1
  101. package/skills/design-for-depth/references/software-design-philosophy.md +1 -1
  102. package/skills/diagnose-failure/SKILL.md +20 -14
  103. package/skills/diagnose-failure/references/diagnostic-loop-catalog.md +1 -3
  104. package/skills/diagnose-failure/references/{flaky-and-performance.md → flaky-and-performance-diagnosis.md} +1 -1
  105. package/skills/discuss/SKILL.md +34 -22
  106. package/skills/discuss/references/discussion-continuity.md +71 -0
  107. package/skills/evaluate-skill/SKILL.md +5 -5
  108. package/skills/evaluate-skill/references/{definition-schema.md → evaluation-definition-schema.md} +42 -2
  109. package/skills/evaluate-skill/references/execution-and-evidence.md +8 -3
  110. package/skills/evaluate-skill/scripts/lib/definitions.mjs +114 -3
  111. package/skills/evaluate-skill/scripts/lib/grade-interaction.mjs +156 -1
  112. package/skills/evaluate-skill/scripts/lib/grade.mjs +9 -1
  113. package/skills/evaluate-skill/scripts/lib/pi.mjs +147 -32
  114. package/skills/evaluate-skill/scripts/lib/rpc.mjs +4 -4
  115. package/skills/evaluate-skill/scripts/lib/runner.mjs +36 -14
  116. package/skills/evaluate-skill/scripts/lib/sandbox.mjs +92 -0
  117. package/skills/evaluate-skill/scripts/pi-guard.mjs +1 -1
  118. package/skills/evaluate-skill/scripts/pi-observer.mjs +66 -0
  119. package/skills/evaluate-skill/scripts/skill-eval.mjs +6 -5
  120. package/skills/execute-work/SKILL.md +18 -15
  121. package/skills/execute-work/references/code-practices.md +1 -1
  122. package/skills/execute-work/references/execute-work-edges.md +42 -0
  123. package/skills/finish-branch/SKILL.md +2 -2
  124. package/skills/finish-branch/references/integration-options.md +1 -1
  125. package/skills/handoff/SKILL.md +3 -3
  126. package/skills/launch-work/SKILL.md +1 -1
  127. package/skills/launch-work/references/launch-readiness.md +2 -2
  128. package/skills/migration-work/SKILL.md +2 -2
  129. package/skills/migration-work/references/migration-lifecycle.md +1 -1
  130. package/skills/mode-contract/SKILL.md +4 -4
  131. package/skills/release-work/SKILL.md +1 -1
  132. package/skills/release-work/references/release-evidence.md +1 -1
  133. package/skills/review-artifact/SKILL.md +28 -26
  134. package/skills/review-work/SKILL.md +28 -26
  135. package/skills/review-work/references/{reviewer-prompt.md → independent-work-reviewer-contract.md} +1 -1
  136. package/skills/review-work/references/security-risk-lens.md +1 -1
  137. package/skills/setup-freeflow/SKILL.md +3 -1
  138. package/skills/setup-freeflow/references/activation-contract.md +2 -2
  139. package/skills/setup-freeflow/references/host-setup.md +2 -2
  140. package/skills/simplify-code/SKILL.md +1 -1
  141. package/skills/simplify-code/references/simplification-patterns.md +1 -1
  142. package/skills/tdd/SKILL.md +18 -38
  143. package/skills/tdd/references/test-design.md +2 -2
  144. package/skills/track-work/SKILL.md +362 -58
  145. package/skills/track-work/scripts/lib/codec.mjs +570 -0
  146. package/skills/track-work/scripts/lib/commands.mjs +568 -0
  147. package/skills/track-work/scripts/lib/contract.mjs +303 -0
  148. package/skills/track-work/scripts/lib/model.mjs +506 -0
  149. package/skills/track-work/scripts/lib/operations.mjs +965 -0
  150. package/skills/track-work/scripts/lib/record-store.mjs +264 -0
  151. package/skills/track-work/scripts/lib/result.mjs +37 -0
  152. package/skills/track-work/scripts/lib/rewrites.mjs +740 -0
  153. package/skills/track-work/scripts/lib/schema.mjs +277 -0
  154. package/skills/track-work/scripts/lib/source-inventory.mjs +162 -0
  155. package/skills/track-work/scripts/lib/views.mjs +443 -0
  156. package/skills/track-work/scripts/lib/workspace.mjs +134 -0
  157. package/skills/track-work/scripts/working-record.mjs +122 -0
  158. package/skills/verify-work/SKILL.md +14 -2
  159. package/skills/verify-work/references/browser-runtime-evidence.md +1 -1
  160. package/skills/verify-work/references/integration-evidence.md +1 -1
  161. package/skills/verify-work/references/performance-evidence.md +1 -1
  162. package/skills/workflow/SKILL.md +105 -53
  163. package/skills/workflow/references/domain-skill-composition.md +22 -42
  164. package/skills/write-plan/SKILL.md +1 -1
  165. package/skills/write-skill/SKILL.md +3 -2
  166. package/skills/write-skill/references/progressive-disclosure.md +17 -3
  167. package/capabilities/output-router/SKILL.md +0 -206
  168. package/capabilities/output-router/references/safety-policy.md +0 -40
  169. package/capabilities/output-router/references/setup.md +0 -110
  170. package/pi-extension/dist/output-router/host-producer-identification.js +0 -232
  171. package/pi-extension/dist/output-router/native-safety-net.js +0 -216
  172. package/pi-extension/dist/output-router/observed-tool-routing.js +0 -122
  173. package/pi-extension/dist/output-router/renderers.js +0 -1023
  174. package/pi-extension/dist/output-router/router-tools.js +0 -554
  175. package/pi-extension/dist/output-router/schemas.js +0 -383
  176. package/pi-extension/dist/output-router/status.js +0 -744
  177. package/pi-extension/dist/output-router/utils.js +0 -502
  178. package/pi-extension/src/output-router/host-producer-identification.ts +0 -256
  179. package/pi-extension/src/output-router/native-safety-net.ts +0 -248
  180. package/pi-extension/src/output-router/observed-tool-routing.ts +0 -134
  181. package/pi-extension/src/output-router/renderers.ts +0 -1108
  182. package/pi-extension/src/output-router/router-tools.ts +0 -579
  183. package/pi-extension/src/output-router/schemas.ts +0 -387
  184. package/pi-extension/src/output-router/status.ts +0 -791
  185. package/pi-extension/src/output-router/utils.ts +0 -554
  186. package/pi-extension/tests/output-router/observed-producers.test.js +0 -132
  187. package/pi-extension/tests/output-router/search.test.js +0 -722
  188. package/router/dist/benchmarks/benchmark-harness.d.ts +0 -35
  189. package/router/dist/benchmarks/benchmark-harness.js +0 -92
  190. package/router/dist/benchmarks/benchmarks.d.ts +0 -109
  191. package/router/dist/benchmarks/benchmarks.js +0 -979
  192. package/router/dist/benchmarks/codex-qa-benchmarks.d.ts +0 -95
  193. package/router/dist/benchmarks/codex-qa-benchmarks.js +0 -500
  194. package/router/dist/benchmarks/command-benchmarks.d.ts +0 -143
  195. package/router/dist/benchmarks/command-benchmarks.js +0 -698
  196. package/router/dist/benchmarks/context-mode-normalized-benchmarks.d.ts +0 -82
  197. package/router/dist/benchmarks/context-mode-normalized-benchmarks.js +0 -773
  198. package/router/dist/benchmarks/context-mode-real-deep-benchmark.d.ts +0 -132
  199. package/router/dist/benchmarks/context-mode-real-deep-benchmark.js +0 -1380
  200. package/router/dist/benchmarks/context-saving-baseline.d.ts +0 -60
  201. package/router/dist/benchmarks/context-saving-baseline.js +0 -470
  202. package/router/dist/benchmarks/index-benchmarks.d.ts +0 -103
  203. package/router/dist/benchmarks/index-benchmarks.js +0 -862
  204. package/router/dist/benchmarks/storage-policy-benchmarks.d.ts +0 -101
  205. package/router/dist/benchmarks/storage-policy-benchmarks.js +0 -618
  206. package/router/dist/benchmarks/vault-index-benchmarks.d.ts +0 -56
  207. package/router/dist/benchmarks/vault-index-benchmarks.js +0 -322
  208. package/router/dist/config/config.d.ts +0 -103
  209. package/router/dist/config/config.js +0 -632
  210. package/router/dist/config/router-contract.d.ts +0 -10
  211. package/router/dist/config/router-contract.js +0 -54
  212. package/router/dist/config/schema.d.ts +0 -27
  213. package/router/dist/config/schema.js +0 -648
  214. package/router/dist/config/types.d.ts +0 -573
  215. package/router/dist/config/types.js +0 -41
  216. package/router/dist/evidence/bounded-evidence.d.ts +0 -40
  217. package/router/dist/evidence/bounded-evidence.js +0 -323
  218. package/router/dist/evidence/evidence-range-selector.d.ts +0 -24
  219. package/router/dist/evidence/evidence-range-selector.js +0 -232
  220. package/router/dist/evidence/evidence-search.d.ts +0 -27
  221. package/router/dist/evidence/evidence-search.js +0 -490
  222. package/router/dist/evidence/evidence.d.ts +0 -38
  223. package/router/dist/evidence/evidence.js +0 -200
  224. package/router/dist/evidence/failure-contracts.d.ts +0 -37
  225. package/router/dist/evidence/failure-contracts.js +0 -166
  226. package/router/dist/evidence/line-ranges.d.ts +0 -24
  227. package/router/dist/evidence/line-ranges.js +0 -22
  228. package/router/dist/experiments/local-index.d.ts +0 -64
  229. package/router/dist/experiments/local-index.js +0 -581
  230. package/router/dist/index.d.ts +0 -30
  231. package/router/dist/index.js +0 -32
  232. package/router/dist/local/local-traversal.d.ts +0 -18
  233. package/router/dist/local/local-traversal.js +0 -334
  234. package/router/dist/processing/engine.d.ts +0 -132
  235. package/router/dist/processing/engine.js +0 -533
  236. package/router/dist/processing/reducers.d.ts +0 -280
  237. package/router/dist/processing/reducers.js +0 -1673
  238. package/router/dist/processing/renderers.d.ts +0 -31
  239. package/router/dist/processing/renderers.js +0 -195
  240. package/router/dist/processing/scripts.d.ts +0 -91
  241. package/router/dist/processing/scripts.js +0 -386
  242. package/router/dist/repo/repo-traversal.d.ts +0 -18
  243. package/router/dist/repo/repo-traversal.js +0 -245
  244. package/router/dist/routing/observed-reducers.d.ts +0 -41
  245. package/router/dist/routing/observed-reducers.js +0 -661
  246. package/router/dist/routing/observed-routing.d.ts +0 -26
  247. package/router/dist/routing/observed-routing.js +0 -378
  248. package/router/dist/routing/parsers.d.ts +0 -16
  249. package/router/dist/routing/parsers.js +0 -521
  250. package/router/dist/routing/run-filters.d.ts +0 -60
  251. package/router/dist/routing/run-filters.js +0 -238
  252. package/router/dist/routing/run-reducers.d.ts +0 -49
  253. package/router/dist/routing/run-reducers.js +0 -122
  254. package/router/dist/sandbox/adapter-roots.d.ts +0 -46
  255. package/router/dist/sandbox/adapter-roots.js +0 -66
  256. package/router/dist/sandbox/eryx-python-adapter.d.ts +0 -13
  257. package/router/dist/sandbox/eryx-python-adapter.js +0 -868
  258. package/router/dist/sandbox/jq-wasm-adapter.d.ts +0 -9
  259. package/router/dist/sandbox/jq-wasm-adapter.js +0 -429
  260. package/router/dist/sandbox/quickjs-wasi-adapter.d.ts +0 -13
  261. package/router/dist/sandbox/quickjs-wasi-adapter.js +0 -384
  262. package/router/dist/sandbox/script-sandbox.d.ts +0 -134
  263. package/router/dist/sandbox/script-sandbox.js +0 -337
  264. package/router/dist/setup/script-transform-adapters.d.ts +0 -32
  265. package/router/dist/setup/script-transform-adapters.js +0 -278
  266. package/router/dist/tools/batch.d.ts +0 -33
  267. package/router/dist/tools/batch.js +0 -586
  268. package/router/dist/tools/run.d.ts +0 -62
  269. package/router/dist/tools/run.js +0 -1304
  270. package/router/dist/tools/search.d.ts +0 -66
  271. package/router/dist/tools/search.js +0 -1364
  272. package/router/dist/transform/engine.d.ts +0 -168
  273. package/router/dist/transform/engine.js +0 -2072
  274. package/router/dist/vault/vault-index.d.ts +0 -125
  275. package/router/dist/vault/vault-index.js +0 -416
  276. package/router/dist/vault/vault.d.ts +0 -138
  277. package/router/dist/vault/vault.js +0 -630
  278. package/runtime/interaction-contract.md +0 -16
  279. package/skills/discuss/references/checkpoints.md +0 -66
  280. package/skills/execute-work/references/execution-loop.md +0 -77
  281. package/skills/track-work/references/working-record-schema.md +0 -378
  282. package/skills/workflow/references/workflow-loop.md +0 -92
  283. /package/skills/handoff/references/{templates.md → handoff-templates.md} +0 -0
  284. /package/skills/review-artifact/references/{reviewer-prompt.md → independent-artifact-reviewer-contract.md} +0 -0
@@ -0,0 +1,303 @@
1
+ export const CHECKPOINT_TYPES = new Set(["Independent review", "Local commit", "User decision", "Continuity"]);
2
+ export const CHECKPOINT_RESULTS = new Set(["Completed", "Deferred", "Cancelled", "Replaced"]);
3
+ export const DECISION_OPERATIONS = new Set(["add", "update", "remove", "retire", "supersede"]);
4
+ export const PROPOSAL_OPERATIONS = new Set(["add", "update", "remove"]);
5
+ export const NOTE_OPERATIONS = new Set(["add", "update", "remove"]);
6
+ export const DECISION_CONTROLLED_FIELDS = new Set(["state", "supersedes", "supersededBy"]);
7
+
8
+ export const DECISION_ID_PATTERN = /^D-\d{3,}$/;
9
+ export const SLICE_ID_PATTERN = /^S-\d{3,}$/;
10
+ export const ENTITY_ID_SUFFIX_PATTERN = /^\d{3,}$/;
11
+ export const ENTITY_TITLE_PATTERN = /^(?<id>[A-Z]-\d{3,})\s+—\s+(?<title>.+)$/;
12
+
13
+ export const CONTEXT_PATCH_FIELDS = {
14
+ goal: "string",
15
+ whatDefinesTask: "string",
16
+ settled: "string",
17
+ tentative: "string",
18
+ open: "string",
19
+ currentDirection: "string",
20
+ boundaries: "string",
21
+ };
22
+
23
+ export const WORK_PATCH_FIELDS = {
24
+ route: "string",
25
+ currentSlice: "forbidden",
26
+ blockers: "array",
27
+ upcomingCheckpoints: "array",
28
+ nextAction: "string",
29
+ };
30
+
31
+ export const PRECISE_STRING_FIELDS = new Set([
32
+ "title",
33
+ "type",
34
+ "intendedResult",
35
+ "expectedEvidence",
36
+ "authoritySource",
37
+ "reasonAndScope",
38
+ "stopCondition",
39
+ "startingState",
40
+ "resumeWhen",
41
+ "result",
42
+ "reviewSummary",
43
+ "taskEffect",
44
+ "goal",
45
+ "whatDefinesTask",
46
+ "settled",
47
+ "tentative",
48
+ "open",
49
+ "currentDirection",
50
+ "boundaries",
51
+ "route",
52
+ "nextAction",
53
+ "decision",
54
+ "establishedBy",
55
+ "rationale",
56
+ "consequences",
57
+ "revisitWhen",
58
+ "supersedes",
59
+ "supersededBy",
60
+ "source",
61
+ "body",
62
+ "selectedBy",
63
+ "condition",
64
+ "judgment",
65
+ "evidence",
66
+ "effect",
67
+ ]);
68
+
69
+ export const PRECISE_LIST_FIELDS = new Set([
70
+ "acceptedExtensions",
71
+ "dependencies",
72
+ "selectedCheckpoints",
73
+ "blockerHistory",
74
+ "pendingBoundaries",
75
+ "pendingReviews",
76
+ "reopenHistory",
77
+ "evidence",
78
+ "blockers",
79
+ "upcomingCheckpoints",
80
+ ]);
81
+
82
+ export const PRECISE_FORBIDDEN_FIELDS = new Set(["id", "state", "supersedes", "supersededBy", "currentSlice"]);
83
+
84
+ export const UPDATE_INPUT_KEYS = new Set([
85
+ "edits",
86
+ "currentContext",
87
+ "currentWork",
88
+ "currentSlice",
89
+ "goal",
90
+ "whatDefinesTask",
91
+ "settled",
92
+ "tentative",
93
+ "open",
94
+ "currentDirection",
95
+ "boundaries",
96
+ "route",
97
+ "currentRoute",
98
+ "nextAction",
99
+ "nextUsefulAction",
100
+ "blockers",
101
+ "upcomingCheckpoints",
102
+ "decision",
103
+ "decisions",
104
+ "proposal",
105
+ "proposals",
106
+ "note",
107
+ "notes",
108
+ "taskState",
109
+ "taskStateAuthority",
110
+ "authoritySource",
111
+ "userDirection",
112
+ "start",
113
+ "close",
114
+ "block",
115
+ "resume",
116
+ "expectedSha",
117
+ "expectedSha256",
118
+ "dryRun",
119
+ ]);
120
+
121
+ export const EDIT_MODE_INPUT_KEYS = new Set([
122
+ "edits",
123
+ "taskState",
124
+ "taskStateAuthority",
125
+ "authoritySource",
126
+ "userDirection",
127
+ "expectedSha",
128
+ "expectedSha256",
129
+ "dryRun",
130
+ ]);
131
+
132
+ export const SLICE_LIST_FIELDS = new Set([
133
+ "acceptedExtensions",
134
+ "dependencies",
135
+ "selectedCheckpoints",
136
+ "blockerHistory",
137
+ "pendingBoundaries",
138
+ "pendingReviews",
139
+ "reopenHistory",
140
+ "evidence",
141
+ ]);
142
+
143
+ const COMMON_COMMAND_INPUT_KEYS = ["expectedSha", "expectedSha256", "dryRun"];
144
+ export const INIT_INPUT_KEYS = new Set([
145
+ "taskName",
146
+ "name",
147
+ "displayName",
148
+ "shortName",
149
+ "slug",
150
+ "goal",
151
+ "whatDefinesTask",
152
+ "definesTask",
153
+ "settled",
154
+ "currentUnderstanding",
155
+ "tentative",
156
+ "open",
157
+ "openQuestions",
158
+ "currentDirection",
159
+ "boundaries",
160
+ "currentRoute",
161
+ "route",
162
+ "nextAction",
163
+ "nextUsefulAction",
164
+ "blockers",
165
+ "upcomingCheckpoints",
166
+ "taskState",
167
+ "currentSlice",
168
+ "authoritySource",
169
+ "dryRun",
170
+ ]);
171
+
172
+ export const VIEW_INPUT_KEYS = new Set(["view", "entity", "section", "limit"]);
173
+ export const UNLOCK_INPUT_KEYS = new Set(["scope", "authoritySource", "lockPid", "lockCreatedAt"]);
174
+
175
+ export const COMMAND_INPUT_KEYS = {
176
+ start: new Set([
177
+ ...COMMON_COMMAND_INPUT_KEYS,
178
+ "proposalTitle",
179
+ "proposal",
180
+ "id",
181
+ "name",
182
+ "title",
183
+ "type",
184
+ "intendedResult",
185
+ "result",
186
+ "authoritySource",
187
+ "authority",
188
+ "userDirection",
189
+ "reasonAndScope",
190
+ "scope",
191
+ "expectedEvidence",
192
+ "stopCondition",
193
+ "startingState",
194
+ "acceptedExtensions",
195
+ "dependencies",
196
+ "selectedCheckpoints",
197
+ "blocker",
198
+ "resumeWhen",
199
+ "blockerHistory",
200
+ "pendingBoundaries",
201
+ "pendingReviews",
202
+ "reopenHistory",
203
+ "currentResult",
204
+ "resultSummary",
205
+ "evidence",
206
+ "reviewSummary",
207
+ "taskEffect",
208
+ "route",
209
+ "currentRoute",
210
+ "nextAction",
211
+ "nextUsefulAction",
212
+ ]),
213
+ block: new Set([
214
+ ...COMMON_COMMAND_INPUT_KEYS,
215
+ "sliceId",
216
+ "id",
217
+ "currentSliceId",
218
+ "blocker",
219
+ "reason",
220
+ "what",
221
+ "why",
222
+ "required",
223
+ "requiredResolution",
224
+ "resumeWhen",
225
+ ]),
226
+ resume: new Set([
227
+ ...COMMON_COMMAND_INPUT_KEYS,
228
+ "sliceId",
229
+ "id",
230
+ "currentSliceId",
231
+ "resolutionSource",
232
+ "resolvedBy",
233
+ "evidence",
234
+ ]),
235
+ reopen: new Set([
236
+ ...COMMON_COMMAND_INPUT_KEYS,
237
+ "sliceId",
238
+ "id",
239
+ "currentSliceId",
240
+ "authoritySource",
241
+ "authority",
242
+ "userDirection",
243
+ "reopenReason",
244
+ "reason",
245
+ "reasonAndScope",
246
+ "scopeChange",
247
+ "scope",
248
+ "expectedEvidence",
249
+ "stopCondition",
250
+ "startingState",
251
+ "selectedCheckpoints",
252
+ "currentResult",
253
+ "evidence",
254
+ "reviewSummary",
255
+ "taskEffect",
256
+ "pendingBoundaries",
257
+ "pendingReviews",
258
+ "currentRoute",
259
+ "route",
260
+ "nextAction",
261
+ "nextUsefulAction",
262
+ ]),
263
+ close: new Set([
264
+ ...COMMON_COMMAND_INPUT_KEYS,
265
+ "sliceId",
266
+ "id",
267
+ "currentSliceId",
268
+ "finalState",
269
+ "state",
270
+ "authoritySource",
271
+ "parkAuthority",
272
+ "abandonmentAuthority",
273
+ "outcome",
274
+ "result",
275
+ "evidence",
276
+ "reviewSummary",
277
+ "taskEffect",
278
+ "residualEffects",
279
+ "abandonmentReason",
280
+ "reason",
281
+ "currentContext",
282
+ "currentRoute",
283
+ "route",
284
+ "nextAction",
285
+ "nextUsefulAction",
286
+ "taskState",
287
+ "taskStateAuthority",
288
+ ]),
289
+ };
290
+
291
+ export function isSingleLineTitle(value) {
292
+ return typeof value === "string" && value === value.trim() && value.length > 0 && !/[\r\n]/.test(value);
293
+ }
294
+
295
+ export function hasDecisionContent(decision) {
296
+ return [decision.decision, decision.rationale, decision.consequences].some(
297
+ (value) => typeof value === "string" && value.trim(),
298
+ );
299
+ }
300
+
301
+ export function isSingleLineList(value) {
302
+ return Array.isArray(value) && value.every((item) => typeof item === "string" && !/[\r\n]/.test(item));
303
+ }