@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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +2 -1
- package/.codex-plugin/plugin.json +2 -1
- package/README.md +150 -155
- package/capabilities/cognitive-routing/SKILL.md +229 -0
- package/capabilities/context-virtualization/SKILL.md +103 -0
- package/capabilities/conversation-history/SKILL.md +53 -0
- package/command-surface.json +17 -13
- package/hooks/freeflow-runtime-context.mjs +393 -159
- package/hooks/hooks.json +26 -1
- package/hooks/tests/check-runtime-context-hook.sh +223 -54
- package/package.json +25 -16
- package/pi-extension/dist/cognitive-routing/commands.js +96 -0
- package/pi-extension/dist/cognitive-routing/config.js +236 -0
- package/pi-extension/dist/cognitive-routing/controller.js +862 -0
- package/pi-extension/dist/cognitive-routing/history.js +439 -0
- package/pi-extension/dist/cognitive-routing/host.js +126 -0
- package/pi-extension/dist/cognitive-routing/runtime.js +43 -0
- package/pi-extension/dist/cognitive-routing/tool.js +211 -0
- package/pi-extension/dist/cognitive-routing/types.js +6 -0
- package/pi-extension/dist/context-virtualization/commands.js +89 -0
- package/pi-extension/dist/context-virtualization/projector.js +42 -0
- package/pi-extension/dist/context-virtualization/runtime.js +356 -0
- package/pi-extension/dist/context-virtualization/state.js +57 -0
- package/pi-extension/dist/context-virtualization/types.js +10 -0
- package/pi-extension/dist/conversation-history/passages.js +66 -0
- package/pi-extension/dist/conversation-history/ranking.js +105 -0
- package/pi-extension/dist/conversation-history/runtime.js +226 -0
- package/pi-extension/dist/conversation-history/search.js +56 -0
- package/pi-extension/dist/conversation-history/types.js +1 -0
- package/pi-extension/dist/freeflow-context/resolver.js +120 -0
- package/pi-extension/dist/freeflow-context/runtime.js +80 -0
- package/pi-extension/dist/freeflow-context/source-projector.js +95 -0
- package/pi-extension/dist/freeflow-context/tool.js +308 -0
- package/pi-extension/dist/freeflow-context/types.js +12 -0
- package/pi-extension/dist/freeflow-context/visibility.js +28 -0
- package/pi-extension/dist/index.js +516 -98
- package/pi-extension/dist/runtime/runtime-context.js +318 -271
- package/pi-extension/dist/runtime/runtime-identity.js +5 -0
- package/pi-extension/dist/settings/settings-tui.js +78 -0
- package/pi-extension/dist/settings/settings-ui.js +593 -563
- package/pi-extension/dist/ui/text-component.js +57 -0
- package/pi-extension/src/cognitive-routing/commands.ts +119 -0
- package/pi-extension/src/cognitive-routing/config.ts +307 -0
- package/pi-extension/src/cognitive-routing/controller.ts +1118 -0
- package/pi-extension/src/cognitive-routing/history.ts +638 -0
- package/pi-extension/src/cognitive-routing/host.ts +172 -0
- package/pi-extension/src/cognitive-routing/runtime.ts +57 -0
- package/pi-extension/src/cognitive-routing/tool.ts +272 -0
- package/pi-extension/src/cognitive-routing/types.ts +89 -0
- package/pi-extension/src/context-virtualization/commands.ts +111 -0
- package/pi-extension/src/context-virtualization/projector.ts +62 -0
- package/pi-extension/src/context-virtualization/runtime.ts +406 -0
- package/pi-extension/src/context-virtualization/state.ts +79 -0
- package/pi-extension/src/context-virtualization/types.ts +92 -0
- package/pi-extension/src/conversation-history/passages.ts +81 -0
- package/pi-extension/src/conversation-history/ranking.ts +155 -0
- package/pi-extension/src/conversation-history/runtime.ts +250 -0
- package/pi-extension/src/conversation-history/search.ts +79 -0
- package/pi-extension/src/conversation-history/types.ts +31 -0
- package/pi-extension/src/freeflow-context/resolver.ts +139 -0
- package/pi-extension/src/freeflow-context/runtime.ts +100 -0
- package/pi-extension/src/freeflow-context/source-projector.ts +106 -0
- package/pi-extension/src/freeflow-context/tool.ts +360 -0
- package/pi-extension/src/freeflow-context/types.ts +70 -0
- package/pi-extension/src/freeflow-context/visibility.ts +53 -0
- package/pi-extension/src/index.ts +553 -101
- package/pi-extension/src/runtime/runtime-context.ts +339 -281
- package/pi-extension/src/runtime/runtime-identity.ts +8 -0
- package/pi-extension/src/settings/settings-tui.ts +93 -0
- package/pi-extension/src/settings/settings-ui.ts +700 -613
- package/pi-extension/src/ui/text-component.ts +66 -0
- package/pi-extension/tests/cognitive-routing/commands.test.js +134 -0
- package/pi-extension/tests/cognitive-routing/controller.test.js +1099 -0
- package/pi-extension/tests/cognitive-routing/extension-lifecycle.test.js +1071 -0
- package/pi-extension/tests/cognitive-routing/history.test.js +274 -0
- package/pi-extension/tests/cognitive-routing/host-fixture.js +4 -0
- package/pi-extension/tests/cognitive-routing/host-identity.test.js +63 -0
- package/pi-extension/tests/cognitive-routing/profile-resolution.test.js +236 -0
- package/pi-extension/tests/cognitive-routing/tool.test.js +230 -0
- package/pi-extension/tests/context-virtualization/extension.test.js +749 -0
- package/pi-extension/tests/context-virtualization/projector.test.js +110 -0
- package/pi-extension/tests/context-virtualization/runtime.test.js +216 -0
- package/pi-extension/tests/conversation-history/runtime.test.js +98 -0
- package/pi-extension/tests/conversation-history/search.test.js +97 -0
- package/pi-extension/tests/integration/pi-extension.test.js +928 -2047
- package/pi-extension/tests/integration/prompt-architecture.test.js +305 -0
- package/runtime/prompts/cognitive-routing.md +9 -0
- package/runtime/prompts/context-virtualization.md +3 -0
- package/runtime/prompts/conversation-history.md +3 -0
- package/runtime/prompts/core.md +13 -0
- package/runtime/prompts/interaction-contract.md +7 -0
- package/runtime/prompts/skills.md +65 -0
- package/skills/action-selection/SKILL.md +91 -0
- package/skills/bypass/SKILL.md +3 -2
- package/skills/commit-work/SKILL.md +1 -1
- package/skills/commit-work/references/staging-decisions.md +1 -1
- package/skills/decision-gate/SKILL.md +1 -1
- package/skills/design-for-depth/SKILL.md +14 -33
- package/skills/design-for-depth/references/design-pressure-signals.md +1 -1
- package/skills/design-for-depth/references/interface-design-loop.md +1 -1
- package/skills/design-for-depth/references/software-design-philosophy.md +1 -1
- package/skills/diagnose-failure/SKILL.md +20 -14
- package/skills/diagnose-failure/references/diagnostic-loop-catalog.md +1 -3
- package/skills/diagnose-failure/references/{flaky-and-performance.md → flaky-and-performance-diagnosis.md} +1 -1
- package/skills/discuss/SKILL.md +34 -22
- package/skills/discuss/references/discussion-continuity.md +71 -0
- package/skills/evaluate-skill/SKILL.md +5 -5
- package/skills/evaluate-skill/references/{definition-schema.md → evaluation-definition-schema.md} +42 -2
- package/skills/evaluate-skill/references/execution-and-evidence.md +8 -3
- package/skills/evaluate-skill/scripts/lib/definitions.mjs +114 -3
- package/skills/evaluate-skill/scripts/lib/grade-interaction.mjs +156 -1
- package/skills/evaluate-skill/scripts/lib/grade.mjs +9 -1
- package/skills/evaluate-skill/scripts/lib/pi.mjs +147 -32
- package/skills/evaluate-skill/scripts/lib/rpc.mjs +4 -4
- package/skills/evaluate-skill/scripts/lib/runner.mjs +36 -14
- package/skills/evaluate-skill/scripts/lib/sandbox.mjs +92 -0
- package/skills/evaluate-skill/scripts/pi-guard.mjs +1 -1
- package/skills/evaluate-skill/scripts/pi-observer.mjs +66 -0
- package/skills/evaluate-skill/scripts/skill-eval.mjs +6 -5
- package/skills/execute-work/SKILL.md +18 -15
- package/skills/execute-work/references/code-practices.md +1 -1
- package/skills/execute-work/references/execute-work-edges.md +42 -0
- package/skills/finish-branch/SKILL.md +2 -2
- package/skills/finish-branch/references/integration-options.md +1 -1
- package/skills/handoff/SKILL.md +3 -3
- package/skills/launch-work/SKILL.md +1 -1
- package/skills/launch-work/references/launch-readiness.md +2 -2
- package/skills/migration-work/SKILL.md +2 -2
- package/skills/migration-work/references/migration-lifecycle.md +1 -1
- package/skills/mode-contract/SKILL.md +32 -10
- package/skills/release-work/SKILL.md +1 -1
- package/skills/release-work/references/release-evidence.md +1 -1
- package/skills/review-artifact/SKILL.md +28 -26
- package/skills/review-work/SKILL.md +28 -26
- package/skills/review-work/references/{reviewer-prompt.md → independent-work-reviewer-contract.md} +1 -1
- package/skills/review-work/references/security-risk-lens.md +1 -1
- package/skills/setup-freeflow/SKILL.md +6 -10
- package/skills/setup-freeflow/references/activation-contract.md +5 -10
- package/skills/setup-freeflow/references/host-setup.md +3 -7
- package/skills/simplify-code/SKILL.md +1 -1
- package/skills/simplify-code/references/simplification-patterns.md +1 -1
- package/skills/tdd/SKILL.md +18 -38
- package/skills/tdd/references/test-design.md +2 -2
- package/skills/track-work/SKILL.md +362 -58
- package/skills/track-work/scripts/lib/codec.mjs +570 -0
- package/skills/track-work/scripts/lib/commands.mjs +568 -0
- package/skills/track-work/scripts/lib/contract.mjs +303 -0
- package/skills/track-work/scripts/lib/model.mjs +506 -0
- package/skills/track-work/scripts/lib/operations.mjs +965 -0
- package/skills/track-work/scripts/lib/record-store.mjs +264 -0
- package/skills/track-work/scripts/lib/result.mjs +37 -0
- package/skills/track-work/scripts/lib/rewrites.mjs +740 -0
- package/skills/track-work/scripts/lib/schema.mjs +277 -0
- package/skills/track-work/scripts/lib/source-inventory.mjs +162 -0
- package/skills/track-work/scripts/lib/views.mjs +443 -0
- package/skills/track-work/scripts/lib/workspace.mjs +134 -0
- package/skills/track-work/scripts/working-record.mjs +122 -0
- package/skills/verify-work/SKILL.md +14 -2
- package/skills/verify-work/references/browser-runtime-evidence.md +1 -1
- package/skills/verify-work/references/integration-evidence.md +1 -1
- package/skills/verify-work/references/performance-evidence.md +1 -1
- package/skills/workflow/SKILL.md +105 -53
- package/skills/workflow/references/domain-skill-composition.md +22 -42
- package/skills/write-plan/SKILL.md +1 -1
- package/skills/write-skill/SKILL.md +3 -2
- package/skills/write-skill/references/progressive-disclosure.md +17 -3
- package/pi-extension/dist/output-router/host-producer-identification.js +0 -232
- package/pi-extension/dist/output-router/native-safety-net.js +0 -216
- package/pi-extension/dist/output-router/observed-tool-routing.js +0 -122
- package/pi-extension/dist/output-router/renderers.js +0 -1023
- package/pi-extension/dist/output-router/router-tools.js +0 -554
- package/pi-extension/dist/output-router/schemas.js +0 -383
- package/pi-extension/dist/output-router/status.js +0 -744
- package/pi-extension/dist/output-router/utils.js +0 -502
- package/pi-extension/src/output-router/host-producer-identification.ts +0 -256
- package/pi-extension/src/output-router/native-safety-net.ts +0 -248
- package/pi-extension/src/output-router/observed-tool-routing.ts +0 -134
- package/pi-extension/src/output-router/renderers.ts +0 -1108
- package/pi-extension/src/output-router/router-tools.ts +0 -579
- package/pi-extension/src/output-router/schemas.ts +0 -387
- package/pi-extension/src/output-router/status.ts +0 -791
- package/pi-extension/src/output-router/utils.ts +0 -554
- package/pi-extension/tests/output-router/observed-producers.test.js +0 -132
- package/pi-extension/tests/output-router/search.test.js +0 -722
- package/router/dist/benchmarks/benchmark-harness.d.ts +0 -35
- package/router/dist/benchmarks/benchmark-harness.js +0 -92
- package/router/dist/benchmarks/benchmarks.d.ts +0 -109
- package/router/dist/benchmarks/benchmarks.js +0 -979
- package/router/dist/benchmarks/codex-qa-benchmarks.d.ts +0 -95
- package/router/dist/benchmarks/codex-qa-benchmarks.js +0 -500
- package/router/dist/benchmarks/command-benchmarks.d.ts +0 -143
- package/router/dist/benchmarks/command-benchmarks.js +0 -698
- package/router/dist/benchmarks/context-mode-normalized-benchmarks.d.ts +0 -82
- package/router/dist/benchmarks/context-mode-normalized-benchmarks.js +0 -773
- package/router/dist/benchmarks/context-mode-real-deep-benchmark.d.ts +0 -132
- package/router/dist/benchmarks/context-mode-real-deep-benchmark.js +0 -1380
- package/router/dist/benchmarks/context-saving-baseline.d.ts +0 -60
- package/router/dist/benchmarks/context-saving-baseline.js +0 -470
- package/router/dist/benchmarks/index-benchmarks.d.ts +0 -103
- package/router/dist/benchmarks/index-benchmarks.js +0 -862
- package/router/dist/benchmarks/storage-policy-benchmarks.d.ts +0 -101
- package/router/dist/benchmarks/storage-policy-benchmarks.js +0 -618
- package/router/dist/benchmarks/vault-index-benchmarks.d.ts +0 -56
- package/router/dist/benchmarks/vault-index-benchmarks.js +0 -322
- package/router/dist/config/config.d.ts +0 -103
- package/router/dist/config/config.js +0 -632
- package/router/dist/config/router-contract.d.ts +0 -10
- package/router/dist/config/router-contract.js +0 -54
- package/router/dist/config/schema.d.ts +0 -27
- package/router/dist/config/schema.js +0 -648
- package/router/dist/config/types.d.ts +0 -573
- package/router/dist/config/types.js +0 -41
- package/router/dist/evidence/bounded-evidence.d.ts +0 -40
- package/router/dist/evidence/bounded-evidence.js +0 -323
- package/router/dist/evidence/evidence-range-selector.d.ts +0 -24
- package/router/dist/evidence/evidence-range-selector.js +0 -232
- package/router/dist/evidence/evidence-search.d.ts +0 -27
- package/router/dist/evidence/evidence-search.js +0 -490
- package/router/dist/evidence/evidence.d.ts +0 -38
- package/router/dist/evidence/evidence.js +0 -200
- package/router/dist/evidence/failure-contracts.d.ts +0 -37
- package/router/dist/evidence/failure-contracts.js +0 -166
- package/router/dist/evidence/line-ranges.d.ts +0 -24
- package/router/dist/evidence/line-ranges.js +0 -22
- package/router/dist/experiments/local-index.d.ts +0 -64
- package/router/dist/experiments/local-index.js +0 -581
- package/router/dist/index.d.ts +0 -30
- package/router/dist/index.js +0 -32
- package/router/dist/local/local-traversal.d.ts +0 -18
- package/router/dist/local/local-traversal.js +0 -334
- package/router/dist/processing/engine.d.ts +0 -132
- package/router/dist/processing/engine.js +0 -533
- package/router/dist/processing/reducers.d.ts +0 -280
- package/router/dist/processing/reducers.js +0 -1673
- package/router/dist/processing/renderers.d.ts +0 -31
- package/router/dist/processing/renderers.js +0 -195
- package/router/dist/processing/scripts.d.ts +0 -91
- package/router/dist/processing/scripts.js +0 -386
- package/router/dist/repo/repo-traversal.d.ts +0 -18
- package/router/dist/repo/repo-traversal.js +0 -245
- package/router/dist/routing/observed-reducers.d.ts +0 -41
- package/router/dist/routing/observed-reducers.js +0 -661
- package/router/dist/routing/observed-routing.d.ts +0 -26
- package/router/dist/routing/observed-routing.js +0 -378
- package/router/dist/routing/parsers.d.ts +0 -16
- package/router/dist/routing/parsers.js +0 -521
- package/router/dist/routing/run-filters.d.ts +0 -60
- package/router/dist/routing/run-filters.js +0 -238
- package/router/dist/routing/run-reducers.d.ts +0 -49
- package/router/dist/routing/run-reducers.js +0 -122
- package/router/dist/sandbox/adapter-roots.d.ts +0 -46
- package/router/dist/sandbox/adapter-roots.js +0 -66
- package/router/dist/sandbox/eryx-python-adapter.d.ts +0 -13
- package/router/dist/sandbox/eryx-python-adapter.js +0 -868
- package/router/dist/sandbox/jq-wasm-adapter.d.ts +0 -9
- package/router/dist/sandbox/jq-wasm-adapter.js +0 -429
- package/router/dist/sandbox/quickjs-wasi-adapter.d.ts +0 -13
- package/router/dist/sandbox/quickjs-wasi-adapter.js +0 -384
- package/router/dist/sandbox/script-sandbox.d.ts +0 -134
- package/router/dist/sandbox/script-sandbox.js +0 -337
- package/router/dist/setup/script-transform-adapters.d.ts +0 -32
- package/router/dist/setup/script-transform-adapters.js +0 -278
- package/router/dist/tools/batch.d.ts +0 -33
- package/router/dist/tools/batch.js +0 -586
- package/router/dist/tools/run.d.ts +0 -62
- package/router/dist/tools/run.js +0 -1304
- package/router/dist/tools/search.d.ts +0 -66
- package/router/dist/tools/search.js +0 -1364
- package/router/dist/transform/engine.d.ts +0 -168
- package/router/dist/transform/engine.js +0 -2072
- package/router/dist/vault/vault-index.d.ts +0 -125
- package/router/dist/vault/vault-index.js +0 -416
- package/router/dist/vault/vault.d.ts +0 -138
- package/router/dist/vault/vault.js +0 -630
- package/runtime/interaction-contract.md +0 -16
- package/skills/discuss/references/checkpoints.md +0 -66
- package/skills/execute-work/references/execution-loop.md +0 -77
- package/skills/output-router/SKILL.md +0 -206
- package/skills/output-router/references/safety-policy.md +0 -40
- package/skills/setup-freeflow/references/output-router-setup.md +0 -110
- package/skills/track-work/references/working-record-schema.md +0 -378
- package/skills/workflow/references/workflow-loop.md +0 -92
- /package/skills/handoff/references/{templates.md → handoff-templates.md} +0 -0
- /package/skills/review-artifact/references/{reviewer-prompt.md → independent-artifact-reviewer-contract.md} +0 -0
|
@@ -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
|
+
"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.
|
|
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
|
|
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
|
-
|
|
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
|
|
11
|
+
Coding agents commonly fail at control boundaries:
|
|
18
12
|
|
|
19
|
-
|
|
|
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
|
|
23
|
-
|
|
|
24
|
-
| Every task
|
|
25
|
-
| A passing command becomes an unsupported completion claim. | Verify Work matches
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
64
|
+
Freeflow is one package with different host boundaries:
|
|
73
65
|
|
|
74
|
-
Freeflow
|
|
75
|
-
|
|
76
|
-
| Mode | Use for | Guardrail |
|
|
66
|
+
| Host | Freeflow support | Cognitive Routing |
|
|
77
67
|
| --- | --- | --- |
|
|
78
|
-
|
|
|
79
|
-
|
|
|
80
|
-
|
|
|
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
|
|
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
|
-
|
|
89
|
-
- Output Router as an optional capability loaded only when effective.
|
|
75
|
+
## Capabilities
|
|
90
76
|
|
|
91
|
-
|
|
77
|
+
### Workflow and task memory
|
|
92
78
|
|
|
93
|
-
|
|
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
|
-
|
|
84
|
+
### Optional host capabilities
|
|
96
85
|
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
92
|
+
## Quick start
|
|
121
93
|
|
|
122
|
-
|
|
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
|
|
104
|
+
Trust the Freeflow hook from `/hooks`, then start a new session.
|
|
148
105
|
|
|
149
106
|
### Claude Code
|
|
150
107
|
|
|
151
|
-
```
|
|
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
|
-
|
|
126
|
+
### PiFlow
|
|
169
127
|
|
|
170
|
-
|
|
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
|
-
|
|
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
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
}
|
|
182
|
-
```
|
|
149
|
+
## Modes and workflow
|
|
150
|
+
|
|
151
|
+
Freeflow has exactly three modes:
|
|
183
152
|
|
|
184
|
-
|
|
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
|
-
|
|
188
|
-
->
|
|
189
|
-
->
|
|
190
|
-
->
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
186
|
+
Freeflow is explicit about what its checks prove:
|
|
205
187
|
|
|
206
|
-
|
|
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
|
|
240
|
+
Pi settings and PiFlow-only Cognitive Routing controls:
|
|
257
241
|
|
|
258
242
|
```text
|
|
259
243
|
/freeflow
|
|
260
|
-
/
|
|
244
|
+
/freeflow profile standard
|
|
245
|
+
/freeflow profile reasoning
|
|
246
|
+
/freeflow profile auto
|
|
261
247
|
```
|
|
262
248
|
|
|
263
|
-
`/freeflow settings` edits personal
|
|
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
|
-
|
|
251
|
+
In PiFlow, while the host is idle:
|
|
266
252
|
|
|
267
|
-
|
|
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
|
-
|
|
270
|
-
|
|
271
|
-
|
|
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
|
-
- [
|
|
274
|
-
- [
|
|
275
|
-
- [
|
|
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
|
|
273
|
+
## What Freeflow is not
|
|
278
274
|
|
|
279
|
-
- Not a new agent.
|
|
280
|
-
- Not a
|
|
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
|