@hassangameryt/freeflow 0.4.0 → 0.5.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.
@@ -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.5.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.5.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.5.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
@@ -5,9 +5,9 @@
5
5
  Freeflow helps coding agents move through consequential work without a rigid pipeline, silent decisions, or context-heavy ceremony.
6
6
 
7
7
  > Use feedback to choose the smallest useful next action.
8
-
8
+ >
9
9
  > Re-enter the narrowest owning activity when evidence changes the path.
10
-
10
+ >
11
11
  > Memory preserves context. It does not create authority.
12
12
 
13
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.
@@ -25,7 +25,7 @@ Coding agents are strong at mutation and weak at control boundaries:
25
25
  | A passing command becomes an unsupported completion claim. | Verify Work matches direct evidence to the exact claim and boundary. |
26
26
  | Review findings are treated as commands. | The active agent adjudicates; corrections require existing or explicit authority. |
27
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. |
28
+ | Large search, logs, and test output consume the context window. | Pi's optional Output Router returns focused evidence with exact recovery where configured. |
29
29
 
30
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
31
 
@@ -83,10 +83,7 @@ Task type and direct skill calls do not silently switch mode.
83
83
 
84
84
  ## Skills And Routing
85
85
 
86
- Freeflow ships 26 skill packages:
87
-
88
- - 25 active model/contributor skills;
89
- - Output Router as an optional capability loaded only when effective.
86
+ Freeflow ships 25 model/contributor skills to Codex, Claude Code, and Pi. The Pi package also includes Output Router as a separately packaged optional capability; it is not part of Codex or Claude skill discovery or lifecycle context.
90
87
 
91
88
  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.
92
89
 
@@ -106,7 +103,7 @@ It records state transitions, not every edit or comment. Routine in-slice feedba
106
103
 
107
104
  ## Context Is For Decisions, Not Dumps
108
105
 
109
- Output Router keeps noisy evidence recoverable without forcing all of it into model context.
106
+ In Pi, the optional Output Router keeps noisy evidence recoverable without forcing all of it into model context.
110
107
 
111
108
  | Need | Use |
112
109
  | --- | --- |
@@ -117,7 +114,7 @@ Output Router keeps noisy evidence recoverable without forcing all of it into mo
117
114
  | Inspect configuration, vault, routing, or adapters | `freeflow_status` |
118
115
  | Read a known file or run a tiny exact command | Native host tools |
119
116
 
120
- Output Router is disabled by default. Setup enables it only after an explicit request.
117
+ Output Router is disabled by default and available only through the Pi extension. Enable it explicitly through Pi's `/output-router` surface.
121
118
 
122
119
  ## Evidence, Not Marketing Certainty
123
120
 
@@ -144,15 +141,18 @@ codex plugin add freeflow@freeflow
144
141
  codex plugin list | rg freeflow
145
142
  ```
146
143
 
147
- Trust the Freeflow `SessionStart` hook from `/hooks` when Codex requests review.
144
+ Trust the Freeflow `SessionStart` hook from `/hooks` when Codex requests review, then start a new session so skills and lifecycle context load from the installed plugin.
148
145
 
149
146
  ### Claude Code
150
147
 
151
148
  ```bash
152
149
  /plugin marketplace add hassan-mohiddin/freeflow
153
150
  /plugin install freeflow
151
+ /reload-plugins
154
152
  ```
155
153
 
154
+ Start a new session after first install when the current session predates the plugin.
155
+
156
156
  ### Pi
157
157
 
158
158
  ```bash
@@ -184,26 +184,25 @@ Minimal setup creates shared activation:
184
184
  Configuration layers are:
185
185
 
186
186
  ```text
187
- Pi session capability or mode override
187
+ host session mode override
188
188
  -> .freeflow/local.json personal core override
189
189
  -> .freeflow/config.json shared repository value
190
190
  -> built-in default
191
191
  ```
192
192
 
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.
193
+ `.freeflow/config.json` is required. `.freeflow/local.json` is optional and cannot activate Freeflow by itself. Pi stores session overrides in branch-aware session JSONL; Claude and Codex store mode overrides in plugin-owned data keyed by host session ID. Session controls 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.
194
194
 
195
195
  ## Runtime Delivery
196
196
 
197
197
  When effective, host adapters deliver:
198
198
 
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.
199
+ - `runtime/interaction-contract.md` as developer context for compact turn interpretation;
200
+ - one `skills/workflow/SKILL.md` bootstrap per context epoch while Skills are effective;
201
+ - compact active or dormant mode state.
203
202
 
204
203
  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.
205
204
 
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.
205
+ Pi appends effective compact context before agent turns and stores Workflow as one hidden persistent session message. Codex and Claude use one packaged runtime hook: `SessionStart` restores the complete enabled context after startup, resume, clear, and compact; `UserPromptSubmit` emits only for an explicit session-mode control and stays silent on ordinary prompts. Claude uses a bounded host-process-scoped, one-shot lifecycle handoff to retain an override when `/clear` changes the host session identifier. Their hook never exposes Output Router. Setup reports automatic delivery as confirmed, unavailable, or unconfirmed.
207
206
 
208
207
  ## Commands
209
208
 
@@ -260,9 +259,11 @@ Pi-native settings controls:
260
259
  /output-router
261
260
  ```
262
261
 
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.
262
+ Pi `/freeflow settings` edits personal core overrides, `/freeflow settings session` manages temporary core and mode overrides, and `/freeflow settings repo` edits shared settings. For session mode, Pi uses `/freeflow mode <mode|reset>`, Claude uses `/freeflow:mode-contract <mode|reset>`, and Codex uses `$mode-contract <mode|reset>`. Clear natural-language instructions such as “Switch to conversation mode” use the same host-managed session control; questions and hypotheticals do not.
263
+
264
+ Claude exposes plugin skills as namespaced commands such as `/freeflow:discuss`; Codex exposes them through `/skills` and `$discuss`. Freeflow uses these host-native skill surfaces instead of duplicate manifest command handlers. Direct skill calls select a method. They do not change mode unless they invoke the mode control, authorize mutation, or create independent review context.
264
265
 
265
- Direct skill calls select a method. They do not change mode, authorize mutation, or create independent review context.
266
+ A request to change the **default** is separate. Explicit local/personal wording targets `.freeflow/local.json`; explicit repository/shared/team wording targets `.freeflow/config.json`. An unqualified “change the default mode” request requires one local-versus-repository clarification before editing.
266
267
 
267
268
  ## Public Docs
268
269
 
@@ -193,7 +193,7 @@ When line numbers are unknown, use `query` or `get` first. Use `expand` when a r
193
193
 
194
194
  Use `freeflow_status` to inspect effective config, vault writability/index state, script adapters, observed routing, and migration recommendations.
195
195
 
196
- Use `../setup-freeflow/SKILL.md` for installation, invalid-config repair, or the initial optional-capabilities branch. After valid setup, Output Router owns explicit operational tuning requested through its capability surface.
196
+ Use Pi's `/output-router enable` or repository settings surface for initial enablement. Read [setup guidance](references/setup.md) before repairing capability config or changing optional routing features. After valid setup, Output Router owns explicit operational tuning requested through its capability surface.
197
197
 
198
198
  Persist operational config only after an explicit tuning request or a previously accepted setup branch:
199
199
 
@@ -86,7 +86,7 @@ Rules:
86
86
  - Do not offer or write `redacted`; it is reserved for future work and currently falls back to `metadata-only` with a warning if hand-edited.
87
87
  - Pi public `freeflow_capture` and the separate `providers` setup surface have been removed. Do not write removed `capture` or `providers` config.
88
88
  - `scriptTransform.enabled` defaults to `false`; write `true` only after an explicit script-execution opt-in.
89
- - If the user opts into script transform setup and adapters are missing or unavailable, recommend installing global adapters. On consent, resolve `../../router/dist/setup/script-transform-adapters.js` relative to `skills/setup-freeflow/SKILL.md` and run `node <plugin-root>/router/dist/setup/script-transform-adapters.js install --config .freeflow/config.json`.
89
+ - If the user opts into script transform setup and adapters are missing or unavailable, recommend installing global adapters. On consent, run `node <plugin-root>/router/dist/setup/script-transform-adapters.js install --config .freeflow/config.json`.
90
90
  - The installer uses `~/.cache/freeflow-script-adapters` by default, or `FREEFLOW_SCRIPT_TRANSFORM_ADAPTERS_HOME` when set. It installs `quickjs-wasi@3.0.1`, `jq-wasm@1.2.0-jq-1.8.2`, `@bsull/eryx@0.5.0`, and `node@24` for the Python JSPI child runner, writes `freeflow-adapter-env.sh`, probes sandbox proofs, and updates `outputRouter.scriptTransform.languages` with only proof-passing languages.
91
91
  - Freeflow auto-discovers adapters from that global cache. The explicit roots `FREEFLOW_QUICKJS_WASI_ROOT`, `FREEFLOW_JQ_WASM_ROOT`, and `FREEFLOW_ERYX_ROOT` remain overrides for custom installs.
92
92
  - Python/Eryx is installed by setup and uses the setup-installed child Node process launched with `--experimental-wasm-jspi` when the host process lacks JSPI. It must not be marked available unless that child runner passes the required sandbox probes.
@@ -1,5 +1,16 @@
1
1
  {
2
2
  "nativeSlashHandlers": false,
3
+ "hostNativeSkillInvocation": {
4
+ "claude": "namespaced-slash-skill",
5
+ "codex": "skill-mention",
6
+ "pi": "registered-command"
7
+ },
8
+ "sessionModeControls": {
9
+ "claude": "/freeflow:mode-contract <mode|reset>",
10
+ "codex": "$mode-contract <mode|reset>",
11
+ "pi": "/freeflow mode <mode|reset>",
12
+ "naturalLanguage": true
13
+ },
3
14
  "modeCommands": [
4
15
  {
5
16
  "command": "/freeflow mode conversation",