@hassangameryt/freeflow 0.4.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 (285) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +2 -1
  3. package/.codex-plugin/plugin.json +2 -1
  4. package/README.md +150 -155
  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 +17 -13
  9. package/hooks/freeflow-runtime-context.mjs +393 -159
  10. package/hooks/hooks.json +26 -1
  11. package/hooks/tests/check-runtime-context-hook.sh +223 -54
  12. package/package.json +25 -16
  13. package/pi-extension/dist/cognitive-routing/commands.js +96 -0
  14. package/pi-extension/dist/cognitive-routing/config.js +236 -0
  15. package/pi-extension/dist/cognitive-routing/controller.js +862 -0
  16. package/pi-extension/dist/cognitive-routing/history.js +439 -0
  17. package/pi-extension/dist/cognitive-routing/host.js +126 -0
  18. package/pi-extension/dist/cognitive-routing/runtime.js +43 -0
  19. package/pi-extension/dist/cognitive-routing/tool.js +211 -0
  20. package/pi-extension/dist/cognitive-routing/types.js +6 -0
  21. package/pi-extension/dist/context-virtualization/commands.js +89 -0
  22. package/pi-extension/dist/context-virtualization/projector.js +42 -0
  23. package/pi-extension/dist/context-virtualization/runtime.js +356 -0
  24. package/pi-extension/dist/context-virtualization/state.js +57 -0
  25. package/pi-extension/dist/context-virtualization/types.js +10 -0
  26. package/pi-extension/dist/conversation-history/passages.js +66 -0
  27. package/pi-extension/dist/conversation-history/ranking.js +105 -0
  28. package/pi-extension/dist/conversation-history/runtime.js +226 -0
  29. package/pi-extension/dist/conversation-history/search.js +56 -0
  30. package/pi-extension/dist/conversation-history/types.js +1 -0
  31. package/pi-extension/dist/freeflow-context/resolver.js +120 -0
  32. package/pi-extension/dist/freeflow-context/runtime.js +80 -0
  33. package/pi-extension/dist/freeflow-context/source-projector.js +95 -0
  34. package/pi-extension/dist/freeflow-context/tool.js +308 -0
  35. package/pi-extension/dist/freeflow-context/types.js +12 -0
  36. package/pi-extension/dist/freeflow-context/visibility.js +28 -0
  37. package/pi-extension/dist/index.js +516 -98
  38. package/pi-extension/dist/runtime/runtime-context.js +318 -271
  39. package/pi-extension/dist/runtime/runtime-identity.js +5 -0
  40. package/pi-extension/dist/settings/settings-tui.js +78 -0
  41. package/pi-extension/dist/settings/settings-ui.js +593 -563
  42. package/pi-extension/dist/ui/text-component.js +57 -0
  43. package/pi-extension/src/cognitive-routing/commands.ts +119 -0
  44. package/pi-extension/src/cognitive-routing/config.ts +307 -0
  45. package/pi-extension/src/cognitive-routing/controller.ts +1118 -0
  46. package/pi-extension/src/cognitive-routing/history.ts +638 -0
  47. package/pi-extension/src/cognitive-routing/host.ts +172 -0
  48. package/pi-extension/src/cognitive-routing/runtime.ts +57 -0
  49. package/pi-extension/src/cognitive-routing/tool.ts +272 -0
  50. package/pi-extension/src/cognitive-routing/types.ts +89 -0
  51. package/pi-extension/src/context-virtualization/commands.ts +111 -0
  52. package/pi-extension/src/context-virtualization/projector.ts +62 -0
  53. package/pi-extension/src/context-virtualization/runtime.ts +406 -0
  54. package/pi-extension/src/context-virtualization/state.ts +79 -0
  55. package/pi-extension/src/context-virtualization/types.ts +92 -0
  56. package/pi-extension/src/conversation-history/passages.ts +81 -0
  57. package/pi-extension/src/conversation-history/ranking.ts +155 -0
  58. package/pi-extension/src/conversation-history/runtime.ts +250 -0
  59. package/pi-extension/src/conversation-history/search.ts +79 -0
  60. package/pi-extension/src/conversation-history/types.ts +31 -0
  61. package/pi-extension/src/freeflow-context/resolver.ts +139 -0
  62. package/pi-extension/src/freeflow-context/runtime.ts +100 -0
  63. package/pi-extension/src/freeflow-context/source-projector.ts +106 -0
  64. package/pi-extension/src/freeflow-context/tool.ts +360 -0
  65. package/pi-extension/src/freeflow-context/types.ts +70 -0
  66. package/pi-extension/src/freeflow-context/visibility.ts +53 -0
  67. package/pi-extension/src/index.ts +553 -101
  68. package/pi-extension/src/runtime/runtime-context.ts +339 -281
  69. package/pi-extension/src/runtime/runtime-identity.ts +8 -0
  70. package/pi-extension/src/settings/settings-tui.ts +93 -0
  71. package/pi-extension/src/settings/settings-ui.ts +700 -613
  72. package/pi-extension/src/ui/text-component.ts +66 -0
  73. package/pi-extension/tests/cognitive-routing/commands.test.js +134 -0
  74. package/pi-extension/tests/cognitive-routing/controller.test.js +1099 -0
  75. package/pi-extension/tests/cognitive-routing/extension-lifecycle.test.js +1071 -0
  76. package/pi-extension/tests/cognitive-routing/history.test.js +274 -0
  77. package/pi-extension/tests/cognitive-routing/host-fixture.js +4 -0
  78. package/pi-extension/tests/cognitive-routing/host-identity.test.js +63 -0
  79. package/pi-extension/tests/cognitive-routing/profile-resolution.test.js +236 -0
  80. package/pi-extension/tests/cognitive-routing/tool.test.js +230 -0
  81. package/pi-extension/tests/context-virtualization/extension.test.js +749 -0
  82. package/pi-extension/tests/context-virtualization/projector.test.js +110 -0
  83. package/pi-extension/tests/context-virtualization/runtime.test.js +216 -0
  84. package/pi-extension/tests/conversation-history/runtime.test.js +98 -0
  85. package/pi-extension/tests/conversation-history/search.test.js +97 -0
  86. package/pi-extension/tests/integration/pi-extension.test.js +928 -2047
  87. package/pi-extension/tests/integration/prompt-architecture.test.js +305 -0
  88. package/runtime/prompts/cognitive-routing.md +9 -0
  89. package/runtime/prompts/context-virtualization.md +3 -0
  90. package/runtime/prompts/conversation-history.md +3 -0
  91. package/runtime/prompts/core.md +13 -0
  92. package/runtime/prompts/interaction-contract.md +7 -0
  93. package/runtime/prompts/skills.md +65 -0
  94. package/skills/action-selection/SKILL.md +91 -0
  95. package/skills/bypass/SKILL.md +3 -2
  96. package/skills/commit-work/SKILL.md +1 -1
  97. package/skills/commit-work/references/staging-decisions.md +1 -1
  98. package/skills/decision-gate/SKILL.md +1 -1
  99. package/skills/design-for-depth/SKILL.md +14 -33
  100. package/skills/design-for-depth/references/design-pressure-signals.md +1 -1
  101. package/skills/design-for-depth/references/interface-design-loop.md +1 -1
  102. package/skills/design-for-depth/references/software-design-philosophy.md +1 -1
  103. package/skills/diagnose-failure/SKILL.md +20 -14
  104. package/skills/diagnose-failure/references/diagnostic-loop-catalog.md +1 -3
  105. package/skills/diagnose-failure/references/{flaky-and-performance.md → flaky-and-performance-diagnosis.md} +1 -1
  106. package/skills/discuss/SKILL.md +34 -22
  107. package/skills/discuss/references/discussion-continuity.md +71 -0
  108. package/skills/evaluate-skill/SKILL.md +5 -5
  109. package/skills/evaluate-skill/references/{definition-schema.md → evaluation-definition-schema.md} +42 -2
  110. package/skills/evaluate-skill/references/execution-and-evidence.md +8 -3
  111. package/skills/evaluate-skill/scripts/lib/definitions.mjs +114 -3
  112. package/skills/evaluate-skill/scripts/lib/grade-interaction.mjs +156 -1
  113. package/skills/evaluate-skill/scripts/lib/grade.mjs +9 -1
  114. package/skills/evaluate-skill/scripts/lib/pi.mjs +147 -32
  115. package/skills/evaluate-skill/scripts/lib/rpc.mjs +4 -4
  116. package/skills/evaluate-skill/scripts/lib/runner.mjs +36 -14
  117. package/skills/evaluate-skill/scripts/lib/sandbox.mjs +92 -0
  118. package/skills/evaluate-skill/scripts/pi-guard.mjs +1 -1
  119. package/skills/evaluate-skill/scripts/pi-observer.mjs +66 -0
  120. package/skills/evaluate-skill/scripts/skill-eval.mjs +6 -5
  121. package/skills/execute-work/SKILL.md +18 -15
  122. package/skills/execute-work/references/code-practices.md +1 -1
  123. package/skills/execute-work/references/execute-work-edges.md +42 -0
  124. package/skills/finish-branch/SKILL.md +2 -2
  125. package/skills/finish-branch/references/integration-options.md +1 -1
  126. package/skills/handoff/SKILL.md +3 -3
  127. package/skills/launch-work/SKILL.md +1 -1
  128. package/skills/launch-work/references/launch-readiness.md +2 -2
  129. package/skills/migration-work/SKILL.md +2 -2
  130. package/skills/migration-work/references/migration-lifecycle.md +1 -1
  131. package/skills/mode-contract/SKILL.md +32 -10
  132. package/skills/release-work/SKILL.md +1 -1
  133. package/skills/release-work/references/release-evidence.md +1 -1
  134. package/skills/review-artifact/SKILL.md +28 -26
  135. package/skills/review-work/SKILL.md +28 -26
  136. package/skills/review-work/references/{reviewer-prompt.md → independent-work-reviewer-contract.md} +1 -1
  137. package/skills/review-work/references/security-risk-lens.md +1 -1
  138. package/skills/setup-freeflow/SKILL.md +6 -10
  139. package/skills/setup-freeflow/references/activation-contract.md +5 -10
  140. package/skills/setup-freeflow/references/host-setup.md +3 -7
  141. package/skills/simplify-code/SKILL.md +1 -1
  142. package/skills/simplify-code/references/simplification-patterns.md +1 -1
  143. package/skills/tdd/SKILL.md +18 -38
  144. package/skills/tdd/references/test-design.md +2 -2
  145. package/skills/track-work/SKILL.md +362 -58
  146. package/skills/track-work/scripts/lib/codec.mjs +570 -0
  147. package/skills/track-work/scripts/lib/commands.mjs +568 -0
  148. package/skills/track-work/scripts/lib/contract.mjs +303 -0
  149. package/skills/track-work/scripts/lib/model.mjs +506 -0
  150. package/skills/track-work/scripts/lib/operations.mjs +965 -0
  151. package/skills/track-work/scripts/lib/record-store.mjs +264 -0
  152. package/skills/track-work/scripts/lib/result.mjs +37 -0
  153. package/skills/track-work/scripts/lib/rewrites.mjs +740 -0
  154. package/skills/track-work/scripts/lib/schema.mjs +277 -0
  155. package/skills/track-work/scripts/lib/source-inventory.mjs +162 -0
  156. package/skills/track-work/scripts/lib/views.mjs +443 -0
  157. package/skills/track-work/scripts/lib/workspace.mjs +134 -0
  158. package/skills/track-work/scripts/working-record.mjs +122 -0
  159. package/skills/verify-work/SKILL.md +14 -2
  160. package/skills/verify-work/references/browser-runtime-evidence.md +1 -1
  161. package/skills/verify-work/references/integration-evidence.md +1 -1
  162. package/skills/verify-work/references/performance-evidence.md +1 -1
  163. package/skills/workflow/SKILL.md +105 -53
  164. package/skills/workflow/references/domain-skill-composition.md +22 -42
  165. package/skills/write-plan/SKILL.md +1 -1
  166. package/skills/write-skill/SKILL.md +3 -2
  167. package/skills/write-skill/references/progressive-disclosure.md +17 -3
  168. package/pi-extension/dist/output-router/host-producer-identification.js +0 -232
  169. package/pi-extension/dist/output-router/native-safety-net.js +0 -216
  170. package/pi-extension/dist/output-router/observed-tool-routing.js +0 -122
  171. package/pi-extension/dist/output-router/renderers.js +0 -1023
  172. package/pi-extension/dist/output-router/router-tools.js +0 -554
  173. package/pi-extension/dist/output-router/schemas.js +0 -383
  174. package/pi-extension/dist/output-router/status.js +0 -744
  175. package/pi-extension/dist/output-router/utils.js +0 -502
  176. package/pi-extension/src/output-router/host-producer-identification.ts +0 -256
  177. package/pi-extension/src/output-router/native-safety-net.ts +0 -248
  178. package/pi-extension/src/output-router/observed-tool-routing.ts +0 -134
  179. package/pi-extension/src/output-router/renderers.ts +0 -1108
  180. package/pi-extension/src/output-router/router-tools.ts +0 -579
  181. package/pi-extension/src/output-router/schemas.ts +0 -387
  182. package/pi-extension/src/output-router/status.ts +0 -791
  183. package/pi-extension/src/output-router/utils.ts +0 -554
  184. package/pi-extension/tests/output-router/observed-producers.test.js +0 -132
  185. package/pi-extension/tests/output-router/search.test.js +0 -722
  186. package/router/dist/benchmarks/benchmark-harness.d.ts +0 -35
  187. package/router/dist/benchmarks/benchmark-harness.js +0 -92
  188. package/router/dist/benchmarks/benchmarks.d.ts +0 -109
  189. package/router/dist/benchmarks/benchmarks.js +0 -979
  190. package/router/dist/benchmarks/codex-qa-benchmarks.d.ts +0 -95
  191. package/router/dist/benchmarks/codex-qa-benchmarks.js +0 -500
  192. package/router/dist/benchmarks/command-benchmarks.d.ts +0 -143
  193. package/router/dist/benchmarks/command-benchmarks.js +0 -698
  194. package/router/dist/benchmarks/context-mode-normalized-benchmarks.d.ts +0 -82
  195. package/router/dist/benchmarks/context-mode-normalized-benchmarks.js +0 -773
  196. package/router/dist/benchmarks/context-mode-real-deep-benchmark.d.ts +0 -132
  197. package/router/dist/benchmarks/context-mode-real-deep-benchmark.js +0 -1380
  198. package/router/dist/benchmarks/context-saving-baseline.d.ts +0 -60
  199. package/router/dist/benchmarks/context-saving-baseline.js +0 -470
  200. package/router/dist/benchmarks/index-benchmarks.d.ts +0 -103
  201. package/router/dist/benchmarks/index-benchmarks.js +0 -862
  202. package/router/dist/benchmarks/storage-policy-benchmarks.d.ts +0 -101
  203. package/router/dist/benchmarks/storage-policy-benchmarks.js +0 -618
  204. package/router/dist/benchmarks/vault-index-benchmarks.d.ts +0 -56
  205. package/router/dist/benchmarks/vault-index-benchmarks.js +0 -322
  206. package/router/dist/config/config.d.ts +0 -103
  207. package/router/dist/config/config.js +0 -632
  208. package/router/dist/config/router-contract.d.ts +0 -10
  209. package/router/dist/config/router-contract.js +0 -54
  210. package/router/dist/config/schema.d.ts +0 -27
  211. package/router/dist/config/schema.js +0 -648
  212. package/router/dist/config/types.d.ts +0 -573
  213. package/router/dist/config/types.js +0 -41
  214. package/router/dist/evidence/bounded-evidence.d.ts +0 -40
  215. package/router/dist/evidence/bounded-evidence.js +0 -323
  216. package/router/dist/evidence/evidence-range-selector.d.ts +0 -24
  217. package/router/dist/evidence/evidence-range-selector.js +0 -232
  218. package/router/dist/evidence/evidence-search.d.ts +0 -27
  219. package/router/dist/evidence/evidence-search.js +0 -490
  220. package/router/dist/evidence/evidence.d.ts +0 -38
  221. package/router/dist/evidence/evidence.js +0 -200
  222. package/router/dist/evidence/failure-contracts.d.ts +0 -37
  223. package/router/dist/evidence/failure-contracts.js +0 -166
  224. package/router/dist/evidence/line-ranges.d.ts +0 -24
  225. package/router/dist/evidence/line-ranges.js +0 -22
  226. package/router/dist/experiments/local-index.d.ts +0 -64
  227. package/router/dist/experiments/local-index.js +0 -581
  228. package/router/dist/index.d.ts +0 -30
  229. package/router/dist/index.js +0 -32
  230. package/router/dist/local/local-traversal.d.ts +0 -18
  231. package/router/dist/local/local-traversal.js +0 -334
  232. package/router/dist/processing/engine.d.ts +0 -132
  233. package/router/dist/processing/engine.js +0 -533
  234. package/router/dist/processing/reducers.d.ts +0 -280
  235. package/router/dist/processing/reducers.js +0 -1673
  236. package/router/dist/processing/renderers.d.ts +0 -31
  237. package/router/dist/processing/renderers.js +0 -195
  238. package/router/dist/processing/scripts.d.ts +0 -91
  239. package/router/dist/processing/scripts.js +0 -386
  240. package/router/dist/repo/repo-traversal.d.ts +0 -18
  241. package/router/dist/repo/repo-traversal.js +0 -245
  242. package/router/dist/routing/observed-reducers.d.ts +0 -41
  243. package/router/dist/routing/observed-reducers.js +0 -661
  244. package/router/dist/routing/observed-routing.d.ts +0 -26
  245. package/router/dist/routing/observed-routing.js +0 -378
  246. package/router/dist/routing/parsers.d.ts +0 -16
  247. package/router/dist/routing/parsers.js +0 -521
  248. package/router/dist/routing/run-filters.d.ts +0 -60
  249. package/router/dist/routing/run-filters.js +0 -238
  250. package/router/dist/routing/run-reducers.d.ts +0 -49
  251. package/router/dist/routing/run-reducers.js +0 -122
  252. package/router/dist/sandbox/adapter-roots.d.ts +0 -46
  253. package/router/dist/sandbox/adapter-roots.js +0 -66
  254. package/router/dist/sandbox/eryx-python-adapter.d.ts +0 -13
  255. package/router/dist/sandbox/eryx-python-adapter.js +0 -868
  256. package/router/dist/sandbox/jq-wasm-adapter.d.ts +0 -9
  257. package/router/dist/sandbox/jq-wasm-adapter.js +0 -429
  258. package/router/dist/sandbox/quickjs-wasi-adapter.d.ts +0 -13
  259. package/router/dist/sandbox/quickjs-wasi-adapter.js +0 -384
  260. package/router/dist/sandbox/script-sandbox.d.ts +0 -134
  261. package/router/dist/sandbox/script-sandbox.js +0 -337
  262. package/router/dist/setup/script-transform-adapters.d.ts +0 -32
  263. package/router/dist/setup/script-transform-adapters.js +0 -278
  264. package/router/dist/tools/batch.d.ts +0 -33
  265. package/router/dist/tools/batch.js +0 -586
  266. package/router/dist/tools/run.d.ts +0 -62
  267. package/router/dist/tools/run.js +0 -1304
  268. package/router/dist/tools/search.d.ts +0 -66
  269. package/router/dist/tools/search.js +0 -1364
  270. package/router/dist/transform/engine.d.ts +0 -168
  271. package/router/dist/transform/engine.js +0 -2072
  272. package/router/dist/vault/vault-index.d.ts +0 -125
  273. package/router/dist/vault/vault-index.js +0 -416
  274. package/router/dist/vault/vault.d.ts +0 -138
  275. package/router/dist/vault/vault.js +0 -630
  276. package/runtime/interaction-contract.md +0 -16
  277. package/skills/discuss/references/checkpoints.md +0 -66
  278. package/skills/execute-work/references/execution-loop.md +0 -77
  279. package/skills/output-router/SKILL.md +0 -206
  280. package/skills/output-router/references/safety-policy.md +0 -40
  281. package/skills/setup-freeflow/references/output-router-setup.md +0 -110
  282. package/skills/track-work/references/working-record-schema.md +0 -378
  283. package/skills/workflow/references/workflow-loop.md +0 -92
  284. /package/skills/handoff/references/{templates.md → handoff-templates.md} +0 -0
  285. /package/skills/review-artifact/references/{reviewer-prompt.md → independent-artifact-reviewer-contract.md} +0 -0
@@ -10,7 +10,7 @@
10
10
  {
11
11
  "name": "freeflow",
12
12
  "description": "Feedback-based control for coding agents.",
13
- "version": "0.4.0",
13
+ "version": "0.6.0",
14
14
  "category": "development",
15
15
  "source": "./",
16
16
  "author": {
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "freeflow",
3
3
  "description": "Freeflow gives coding agents an Interaction Contract, evidence-driven Workflow, focused methods, and durable task memory across conversation, workflow, and strict-workflow modes.",
4
- "version": "0.4.0",
4
+ "version": "0.6.0",
5
5
  "author": {
6
6
  "name": "Hassan Mohiddin"
7
7
  },
8
8
  "homepage": "https://github.com/hassan-mohiddin/freeflow",
9
9
  "repository": "https://github.com/hassan-mohiddin/freeflow",
10
10
  "license": "MIT",
11
+ "skills": "./skills/",
11
12
  "keywords": [
12
13
  "workflow",
13
14
  "skills",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "freeflow",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "Feedback-based control system for coding agents.",
5
5
  "author": {
6
6
  "name": "Hassan Mohiddin"
@@ -21,6 +21,7 @@
21
21
  "claude"
22
22
  ],
23
23
  "skills": "./skills/",
24
+ "hooks": "./hooks/hooks.json",
24
25
  "interface": {
25
26
  "displayName": "Freeflow",
26
27
  "shortDescription": "Feedback-based control for coding agents.",
package/README.md CHANGED
@@ -2,138 +2,96 @@
2
2
 
3
3
  **A feedback-based control system for coding agents.**
4
4
 
5
- Freeflow helps coding agents move through consequential work without a rigid pipeline, silent decisions, or context-heavy ceremony.
5
+ Freeflow helps coding agents do consequential work without turning every task into a rigid ceremony. It gives the agent a clear interaction contract, evidence-driven Workflow, focused methods, durable task memory, and controlled delivery boundaries.
6
6
 
7
- > Use feedback to choose the smallest useful next action.
8
-
9
- > Re-enter the narrowest owning activity when evidence changes the path.
10
-
11
- > Memory preserves context. It does not create authority.
12
-
13
- The active agent still does the work. Freeflow supplies the interaction contract, workflow routing, focused methods, task memory, and evidence discipline that help it decide what to do next—and when not to edit.
7
+ The host agent still owns tools, permissions, and execution. Freeflow helps it choose the right next action—and know when to stop, ask, verify, or hand work back.
14
8
 
15
9
  ## Why Freeflow
16
10
 
17
- Coding agents are strong at mutation and weak at control boundaries:
11
+ Coding agents commonly fail at control boundaries:
18
12
 
19
- | Common failure | Freeflow response |
13
+ | Pressure | Freeflow response |
20
14
  | --- | --- |
21
15
  | A question or tentative idea becomes an edit. | The Interaction Contract answers first and waits for clear action authority. |
22
- | A prompt conflicts with tests, policy, or accepted behavior. | Decision Gate names the conflict and stops before mutation. |
23
- | Work follows a plan after evidence invalidates it. | Workflow routes from evidence and preserves unaffected work. |
24
- | Every task gets a spec, plan, review, and status ceremony. | Workflow enters at the narrowest useful owner and creates artifacts only when they help. |
25
- | A passing command becomes an unsupported completion claim. | Verify Work matches direct evidence to the exact claim and boundary. |
26
- | Review findings are treated as commands. | The active agent adjudicates; corrections require existing or explicit authority. |
27
- | Compaction loses task state or imports stale branch authority. | Track Work restores the complete Working Record and reconciles it with the current conversation and live repo. |
28
- | Large search, logs, and test output consume the context window. | Output Router returns focused evidence with exact recovery where configured. |
29
-
30
- Freeflow is not a new agent or workflow engine. It is a portable control layer for Codex, Claude Code, Pi, and similar coding environments.
31
-
32
- ## The Control System
33
-
34
- One user interaction is an **Interaction Lifecycle**:
35
-
36
- ![Freeflow Workflow: Entry, Feedback Loop, and Supported Exit](assets/workflow.png)
16
+ | A prompt conflicts with tests, policy, or accepted behavior. | Decision Gate names the conflict before mutation. |
17
+ | New evidence invalidates the plan. | Workflow routes from evidence and preserves unaffected work. |
18
+ | Every task receives unnecessary ceremony. | Workflow enters at the narrowest useful owner. |
19
+ | A passing command becomes an unsupported completion claim. | Verify Work matches evidence to the exact claim and boundary. |
20
+ | Compaction loses task state. | Track Work restores a Working Record and reconciles it with live state. |
21
+ | Tool output consumes future context. | Context Virtualization can archive consumed evidence while preserving session history. |
22
+
23
+ ## Contents
24
+
25
+ - [How it works](#how-it-works)
26
+ - [Host support](#host-support)
27
+ - [Capabilities](#capabilities)
28
+ - [Quick start](#quick-start)
29
+ - [Modes and workflow](#modes-and-workflow)
30
+ - [System prompt architecture](#system-prompt-architecture)
31
+ - [Evidence and limits](#evidence-and-limits)
32
+ - [Commands](#commands)
33
+ - [Documentation and development](#documentation-and-development)
34
+ - [What Freeflow is not](#what-freeflow-is-not)
35
+
36
+ ## How it works
37
+
38
+ Freeflow uses one active agent, one shared context, and nested feedback loops:
37
39
 
38
40
  ```text
39
- [Entry] -> [Feedback Loop when needed] -> [Supported Exit]
40
- ^ ^ | |
41
- | |________| |
42
- |__________________________________________|
43
- later user turn or evidence
44
- ```
45
-
46
- When work is needed, the inner **Feedback Loop** is:
47
-
48
- ![Freeflow Core Feedback Loop: orient, use the owning skill, verify, self-review once, and route from evidence](assets/feedback-loop.png)
49
-
50
- ```text
51
- orient to accepted intent, task memory, and live evidence
52
- -> use the narrowest owning skill
53
- -> implement, discuss, test, or observe
54
- -> verify what the evidence proves
55
- -> when supported, self-review once
56
- -> continue, correct, diagnose, revise, ask, defer, or stop
41
+ Interaction Lifecycle
42
+ └─ Workflow Feedback Loop
43
+ ├─ establishes authority, owner, and slice
44
+ └─ Cognitive Execution Loop — automatic control only
45
+ ├─ Reasoning establishes the governing execution contract
46
+ ├─ DELEGATE to Standard
47
+ │ └─ Environment Interaction Loop
48
+ │ ├─ select and bound the next action
49
+ │ ├─ use Action Selection when uncertain or broad
50
+ │ ├─ take the obvious fast path when mechanical
51
+ │ ├─ execute and observe
52
+ │ └─ repeat within the delegation contract
53
+ ├─ RETURN evidence to Reasoning
54
+ ├─ Reasoning self-reviews
55
+ └─ close, delegate correction, or return to Workflow
57
56
  ```
58
57
 
59
- A Supported Exit may answer, wait, pause, hand off, defer, stop, preserve a controlled boundary, or complete. Freeflow does not invent another phase merely because one exists in the full skill pack.
58
+ Under manual profile control, the Cognitive Execution Loop is not used; the held profile runs the ordinary unsplit Workflow. Cognitive Routing changes compute placement only. It never changes authority, ownership, mode, task scope, evidence requirements, or review independence.
60
59
 
61
- ## Core Principles
60
+ The Workflow owner may be Discuss, Track Work, Execute Work, Verify Work, Review Work, Review Artifact, Diagnose Failure, or another focused method. These methods compose when their conditions apply; they are not a mandatory phase pipeline.
62
61
 
63
- - **The active agent owns the current route.** Independent review may add judgment; it does not take over routing or verification.
64
- - **Verification is factual. Review is judgment.** The active agent verifies; self-review is silent; selected independent review uses a separate context.
65
- - **Pass is not the only review exit.** Pass, Non-blocking, Inconclusive, and Blocking all end review and return evidence to Workflow.
66
- - **Review findings do not authorize edits.** Ask for unapproved corrections and any warranted focused follow-up together.
67
- - **Specs and Plans have separate jobs and separate reviews.** Working Records carry evolving state; Plans remain stable ordered strategy.
68
- - **A slice may span several feedback iterations.** Extend its boundary write-ahead only while the intended result remains coherent.
69
- - **Diagnose before redesigning.** Ordinary mistakes do not prove structural failure.
70
- - **Bypass skips optional pressure, not authority, safety, evidence, or selected review.**
62
+ ## Host support
71
63
 
72
- ## Modes
64
+ Freeflow is one package with different host boundaries:
73
65
 
74
- Freeflow has exactly three modes:
75
-
76
- | Mode | Use for | Guardrail |
66
+ | Host | Freeflow support | Cognitive Routing |
77
67
  | --- | --- | --- |
78
- | `conversation` | Discussion, critique, explanation, and read-only exploration | Agent-performed mutation requires switching mode. |
79
- | `workflow` | Normal consequential or mutating work | Use the adaptive lifecycle and proportionate evidence. |
80
- | `strict-workflow` | High-risk or hard-to-reverse work | Stronger decision, evidence, and checkpoint pressure without review after every slice. |
81
-
82
- Task type and direct skill calls do not silently switch mode.
83
-
84
- ## Skills And Routing
68
+ | Codex | Shared skills and lifecycle hook | Not available; Pi-only capabilities are not delivered |
69
+ | Claude Code | Shared skills and lifecycle hook | Not available; Pi-only capabilities are not delivered |
70
+ | Pi | Shared skills, Pi extension, and optional context capabilities | Configuration is inspectable but execution is disabled |
71
+ | PiFlow | Freeflow package hosted by the separate PiFlow distribution | Available when host controls, Skills, and profiles are configured |
85
72
 
86
- Freeflow ships 26 skill packages:
73
+ Freeflow owns workflow policy, prompt fragments, skills, capabilities, and the Pi extension. PiFlow owns host launch, package installation, session state, updates, and the model-state control required by Cognitive Routing.
87
74
 
88
- - 25 active model/contributor skills;
89
- - Output Router as an optional capability loaded only when effective.
75
+ ## Capabilities
90
76
 
91
- See the [typed skill routing map](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/skill-routing.md) for every owner, sibling route, and reference dependency. See [Workflow](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/workflow.md) for the lifecycle and [Architecture](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/architecture.md) for delivery and configuration.
77
+ ### Workflow and task memory
92
78
 
93
- ## Task Memory Without A Second Task System
79
+ - **Workflow** coordinates authority, owner selection, evidence-driven re-entry, and Supported Exit.
80
+ - **Action Selection** bounds uncertain or broad Environment Interactions while preserving the current owner.
81
+ - **Track Work** maintains one Working Record when decisions, evidence, blockers, or the next action must survive context loss.
82
+ - **Verify Work, Review Work, Review Artifact, and Diagnose Failure** separate factual support, judgment, artifact fitness, and unsupported causes.
94
83
 
95
- Track Work maintains one Working Record for an ongoing task:
84
+ ### Optional host capabilities
96
85
 
97
- - current context;
98
- - one current slice;
99
- - ordered proposed slices;
100
- - task-local decisions and hypotheses;
101
- - evidence pointers and completed history;
102
- - one next useful action;
103
- - optional inert Notes.
86
+ - **[Cognitive Routing](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/capabilities/cognitive-routing.md)** places compute between Reasoning and Standard under automatic control. It is PiFlow-only and experimental.
87
+ - **[Context Virtualization](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/capabilities/context-virtualization.md)** classifies consumed tool evidence as Full, Retained, or Reference-only for future context while leaving canonical history unchanged.
88
+ - **[Conversation History](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/capabilities/conversation-history.md)** performs bounded retrieval of exact missing prior-conversation evidence from the current active branch.
104
89
 
105
- It records state transitions, not every edit or comment. Routine in-slice feedback is not checkpoint history. After compaction, summarization, clear, resume, or session navigation, Workflow reads the complete record before continuing and treats it as memory rather than authority.
106
-
107
- ## Context Is For Decisions, Not Dumps
108
-
109
- Output Router keeps noisy evidence recoverable without forcing all of it into model context.
110
-
111
- | Need | Use |
112
- | --- | --- |
113
- | Search repo, explicit local sources, or routed evidence | `freeflow_search` |
114
- | Run noisy tests, builds, typechecks, logs, or diagnostics | `freeflow_run` |
115
- | Run independent searches/checks and aggregate facts | `freeflow_batch` |
116
- | Compute bounded subsets or statistics | `freeflow_search action=transform` |
117
- | Inspect configuration, vault, routing, or adapters | `freeflow_status` |
118
- | Read a known file or run a tiny exact command | Native host tools |
90
+ All three capabilities are Skills-gated and default-off or unavailable unless their configuration and host conditions are effective. None of them grants authority or replaces Workflow.
119
91
 
120
- Output Router is disabled by default. Setup enables it only after an explicit request.
92
+ ## Quick start
121
93
 
122
- ## Evidence, Not Marketing Certainty
123
-
124
- Historical v0.1 workflow fixtures and current router benchmarks remain reproducible evidence, not universal guarantees. The current adaptive skill candidate is **Unverified** pending baseline-vs-with-skill behavioral evaluation.
125
-
126
- | Evidence | Result |
127
- | --- | --- |
128
- | Historical v0.1 acceptance suite | 15/15 fixtures passed after measured fixes. |
129
- | Historical source-truth conflict pressure | Baseline 2/10; with-skill 10/10. |
130
- | Retrieval benchmark | 7/7 gated fixtures; 98.54% weighted context reduction. |
131
- | Command-output benchmark | 8/8 fixtures with exact recovery; 85.03% weighted reduction. |
132
- | Pi observed-routing eval | 28/28 objective gates; 82.2% overall byte reduction. |
133
-
134
- See [release evidence](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/release-evidence.md) for boundaries, reports, and deferred checks.
135
-
136
- ## Install
94
+ For the complete host-specific setup, see [Getting Started](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/getting-started.md).
137
95
 
138
96
  ### Codex
139
97
 
@@ -141,16 +99,16 @@ See [release evidence](https://github.com/hassan-mohiddin/freeflow/blob/main/plu
141
99
  codex plugin marketplace add https://github.com/hassan-mohiddin/freeflow.git
142
100
  codex plugin marketplace upgrade freeflow
143
101
  codex plugin add freeflow@freeflow
144
- codex plugin list | rg freeflow
145
102
  ```
146
103
 
147
- Trust the Freeflow `SessionStart` hook from `/hooks` when Codex requests review.
104
+ Trust the Freeflow hook from `/hooks`, then start a new session.
148
105
 
149
106
  ### Claude Code
150
107
 
151
- ```bash
108
+ ```text
152
109
  /plugin marketplace add hassan-mohiddin/freeflow
153
110
  /plugin install freeflow
111
+ /reload-plugins
154
112
  ```
155
113
 
156
114
  ### Pi
@@ -165,45 +123,77 @@ Or:
165
123
  pi install git:github.com/hassan-mohiddin/freeflow
166
124
  ```
167
125
 
168
- ## Activate In A Repository
126
+ ### PiFlow
169
127
 
170
- Run:
128
+ Install PiFlow separately, then install Freeflow into it:
129
+
130
+ ```bash
131
+ npm install -g --ignore-scripts @hassangameryt/piflow
132
+ piflow install npm:@hassangameryt/freeflow
133
+ ```
134
+
135
+ For a Git source:
136
+
137
+ ```bash
138
+ piflow install git:github.com/hassan-mohiddin/freeflow
139
+ ```
140
+
141
+ In the target repository, run:
171
142
 
172
143
  ```text
173
144
  /setup-freeflow
174
145
  ```
175
146
 
176
- Minimal setup creates shared activation:
147
+ Setup creates `.freeflow/config.json`, the required shared activation boundary. `.freeflow/local.json` is an optional personal override and cannot activate Freeflow by itself.
177
148
 
178
- ```json
179
- {
180
- "defaultMode": "workflow"
181
- }
182
- ```
149
+ ## Modes and workflow
150
+
151
+ Freeflow has exactly three modes:
183
152
 
184
- Configuration layers are:
153
+ | Mode | Use for |
154
+ | --- | --- |
155
+ | `conversation` | Discussion, critique, explanation, and passive inspection |
156
+ | `workflow` | Active evidence generation and normal consequential work |
157
+ | `strict-workflow` | High-risk or hard-to-reverse work |
158
+
159
+ Mode changes do not authorize work. A direct request, still-valid approval, or accepted task contract establishes the authority envelope; mode, skill selection, usefulness, and new evidence do not widen it.
160
+
161
+ Every bounded activity follows the same Feedback Loop:
185
162
 
186
163
  ```text
187
- Pi session capability or mode override
188
- -> .freeflow/local.json personal core override
189
- -> .freeflow/config.json shared repository value
190
- -> built-in default
164
+ orient to accepted intent, task memory, and live evidence
165
+ -> use the narrowest owner
166
+ -> act, discuss, test, or observe
167
+ -> verify what the evidence proves
168
+ -> self-review the supported result
169
+ -> continue, correct, diagnose, revise, ask, defer, or stop
191
170
  ```
192
171
 
193
- `.freeflow/config.json` is required. `.freeflow/local.json` is optional and cannot activate Freeflow by itself. Session overrides live in branch-aware Pi session JSONL, do not mutate config files, and cannot bypass missing or invalid repository activation. Setup does not write Freeflow instructions into `AGENTS.md`, `CLAUDE.md`, or host rule files.
172
+ ## System prompt architecture
173
+
174
+ Freeflow’s model-facing surface has three layers:
175
+
176
+ 1. **Stable prompt fragments** under `runtime/prompts/` provide compact guidance and conditional capability cues.
177
+ 2. **Runtime State** reports current mode, capability availability, and Cognitive Routing `Control`/`Profile` before every provider request.
178
+ 3. **Discoverable skills and tools** provide complete methods and operations when effective gates apply.
194
179
 
195
- ## Runtime Delivery
180
+ One effective-state snapshot determines all three surfaces. The Interaction Contract is prompt-only. Skills gates Cognitive Routing, Context Virtualization, and Conversation History. Missing optional capability content is omitted and reported unavailable rather than fabricated.
196
181
 
197
- When effective, host adapters deliver:
182
+ Read the full [System Prompt Architecture](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/prompt-architecture.md) and [Workflow](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/workflow.md) docs for the complete contract.
198
183
 
199
- - `runtime/interaction-contract.md` for compact turn interpretation;
200
- - one `skills/workflow/SKILL.md` bootstrap while Skills are effective;
201
- - compact mode and capability state;
202
- - effective optional capability context.
184
+ ## Evidence and limits
203
185
 
204
- Mode Contract and other skills remain on demand. Hooks load context only; they do not enforce policy, block tools, grant permissions, or replace repo instructions.
186
+ Freeflow is explicit about what its checks prove:
205
187
 
206
- Pi appends effective compact context before agent turns and stores Workflow as one hidden persistent session message. Codex and Claude use packaged lifecycle hooks at supported start, resume, clear, and compact boundaries. Setup reports automatic delivery as confirmed, unavailable, or unconfirmed.
188
+ - deterministic checks prove structure, assembly, package boundaries, and selected delivery behavior;
189
+ - release evidence is versioned and records source, checks, artifacts, deferred evidence, and limits;
190
+ - local installation does not prove remote host installation or registry propagation;
191
+ - deterministic skill/runtime checks do not prove model behavior or universal skill readiness;
192
+ - Cognitive Routing remains experimental pending behavioral acceptance.
193
+
194
+ The deprecated Output Router is removed and no longer available. Its implementation and evidence remain archived under `.deprecated/output-router/`.
195
+
196
+ See [Release Process](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/release.md) and [Release Evidence](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/release-evidence/README.md).
207
197
 
208
198
  ## Commands
209
199
 
@@ -211,6 +201,7 @@ Natural language is preferred. Pi registers these canonical direct calls:
211
201
 
212
202
  ```text
213
203
  /discuss
204
+ /action-selection
214
205
  /track-work
215
206
  /write-spec
216
207
  /review-artifact
@@ -229,13 +220,6 @@ Natural language is preferred. Pi registers these canonical direct calls:
229
220
  /bypass
230
221
  ```
231
222
 
232
- Pi-only compatibility aliases:
233
-
234
- ```text
235
- /discover
236
- /execute-plan
237
- ```
238
-
239
223
  Contributor calls:
240
224
 
241
225
  ```text
@@ -253,34 +237,45 @@ Mode controls:
253
237
  /freeflow mode reset
254
238
  ```
255
239
 
256
- Pi-native settings controls:
240
+ Pi settings and PiFlow-only Cognitive Routing controls:
257
241
 
258
242
  ```text
259
243
  /freeflow
260
- /output-router
244
+ /freeflow profile standard
245
+ /freeflow profile reasoning
246
+ /freeflow profile auto
261
247
  ```
262
248
 
263
- `/freeflow settings` edits personal core overrides. `/freeflow settings session` manages temporary, branch-aware Freeflow, Interaction Contract, Skills, and mode overrides without changing config files. `/freeflow settings repo` edits shared settings. `/freeflow mode` remains the direct temporary mode control. Codex and Claude have no native Freeflow slash handlers; canonical names and natural language remain model-routed cues.
249
+ Pi `/freeflow settings` edits personal overrides, `/freeflow settings session` manages temporary session overrides, and `/freeflow settings repo` edits shared repository settings. Profile changes require PiFlow and an idle host.
264
250
 
265
- Direct skill calls select a method. They do not change mode, authorize mutation, or create independent review context.
251
+ In PiFlow, while the host is idle:
266
252
 
267
- ## Public Docs
253
+ - `Ctrl+Shift+R` cycles the manual standard/reasoning hold.
254
+ - `Ctrl+Shift+A` cycles the automatic standard/reasoning profile; from a manual hold, its first press returns to automatic control without forcing a profile transition.
268
255
 
269
- - [Docs index](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/README.md)
270
- - [Workflow](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/workflow.md)
271
- - [Skill routing](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/skill-routing.md)
256
+ Normal Pi does not register these Cognitive Routing shortcuts.
257
+
258
+ ## Documentation and development
259
+
260
+ - [Documentation hub](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/README.md)
261
+ - [Getting Started](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/getting-started.md)
272
262
  - [Architecture](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/architecture.md)
273
- - [Output Router](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/output-router.md)
274
- - [Release evidence](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/release-evidence.md)
275
- - [Release ADRs](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/adr/README.md)
263
+ - [System Prompt Architecture](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/prompt-architecture.md)
264
+ - [Capabilities](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/capabilities/README.md)
265
+ - [PiFlow integration](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/integrations/piflow.md)
266
+ - [Skill routing](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/skill-routing.md)
267
+ - [Release Process](https://github.com/hassan-mohiddin/freeflow/blob/main/plugin-docs/release.md)
268
+ - [Changelog](CHANGELOG.md)
269
+ - [Contributing](CONTRIBUTING.md)
270
+
271
+ For local development, use committed Freeflow snapshots with `npm run snapshot:refresh`. Do not treat an uncommitted working tree as a production package source. PiFlow owns the host development launcher and state synchronization.
276
272
 
277
- ## What Freeflow Is Not
273
+ ## What Freeflow is not
278
274
 
279
- - Not a new agent.
280
- - Not a mandatory phase pipeline.
281
- - Not a CLI enforcement framework.
275
+ - Not a new agent or workflow engine.
276
+ - Not a rigid phase pipeline.
277
+ - Not a permission or CLI enforcement framework.
282
278
  - Not a replacement for repository instructions, tests, policies, or review culture.
283
- - Not old Orchestra with a smaller README.
284
279
  - Not proof that the current candidate is behaviorally ready.
285
280
 
286
281
  ## License