@hassangameryt/freeflow 0.6.0 → 0.7.1

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 (136) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +3 -2
  3. package/.codex-plugin/plugin.json +5 -6
  4. package/.cursor-plugin/plugin.json +25 -0
  5. package/README.md +66 -56
  6. package/capabilities/cognitive-routing/SKILL.md +288 -130
  7. package/com.github.copilot/hooks/hooks.json +11 -0
  8. package/command-surface.json +0 -24
  9. package/gemini-extension.json +5 -0
  10. package/hooks/adapters/claude-session-start.mjs +16 -0
  11. package/hooks/adapters/codex-session-start.mjs +16 -0
  12. package/hooks/adapters/copilot-session-start.mjs +13 -0
  13. package/hooks/adapters/cursor-session-start.mjs +13 -0
  14. package/hooks/adapters/gemini-session-start.mjs +15 -0
  15. package/hooks/claude/hooks.json +18 -0
  16. package/hooks/codex/hooks.json +18 -0
  17. package/hooks/cursor/hooks.json +9 -0
  18. package/hooks/freeflow-runtime-context.mjs +3 -650
  19. package/hooks/hooks.json +4 -30
  20. package/hooks/shared/runtime-context.mjs +210 -0
  21. package/hooks/tests/check-host-adapters.test.mjs +82 -0
  22. package/hooks/tests/check-runtime-context-hook.sh +140 -320
  23. package/package.json +20 -4
  24. package/pi-extension/dist/cognitive-routing/commands.js +3 -3
  25. package/pi-extension/dist/cognitive-routing/config.js +16 -20
  26. package/pi-extension/dist/cognitive-routing/controller.js +478 -48
  27. package/pi-extension/dist/cognitive-routing/history.js +12 -0
  28. package/pi-extension/dist/cognitive-routing/host.js +74 -12
  29. package/pi-extension/dist/cognitive-routing/pi-routing-session.js +414 -0
  30. package/pi-extension/dist/cognitive-routing/pi-session-control.js +320 -0
  31. package/pi-extension/dist/cognitive-routing/tool.js +1 -0
  32. package/pi-extension/dist/cognitive-routing/types.js +1 -1
  33. package/pi-extension/dist/index.js +236 -219
  34. package/pi-extension/dist/runtime/runtime-context.js +126 -286
  35. package/pi-extension/dist/settings/settings-ui.js +52 -336
  36. package/pi-extension/src/cognitive-routing/commands.ts +15 -5
  37. package/pi-extension/src/cognitive-routing/config.ts +16 -20
  38. package/pi-extension/src/cognitive-routing/controller.ts +561 -51
  39. package/pi-extension/src/cognitive-routing/history.ts +12 -0
  40. package/pi-extension/src/cognitive-routing/host.ts +110 -16
  41. package/pi-extension/src/cognitive-routing/pi-routing-session.ts +538 -0
  42. package/pi-extension/src/cognitive-routing/pi-session-control.ts +444 -0
  43. package/pi-extension/src/cognitive-routing/tool.ts +1 -0
  44. package/pi-extension/src/cognitive-routing/types.ts +1 -1
  45. package/pi-extension/src/index.ts +249 -239
  46. package/pi-extension/src/runtime/runtime-context.ts +129 -305
  47. package/pi-extension/src/settings/settings-ui.ts +53 -371
  48. package/pi-extension/tests/cognitive-routing/commands.test.js +1 -1
  49. package/pi-extension/tests/cognitive-routing/controller.test.js +69 -40
  50. package/pi-extension/tests/cognitive-routing/extension-lifecycle.test.js +128 -57
  51. package/pi-extension/tests/cognitive-routing/pi-normal-lifecycle.test.js +434 -0
  52. package/pi-extension/tests/cognitive-routing/pi-session-control.test.js +174 -0
  53. package/pi-extension/tests/cognitive-routing/pi-session-history.test.js +91 -0
  54. package/pi-extension/tests/cognitive-routing/profile-resolution.test.js +47 -4
  55. package/pi-extension/tests/integration/mode-free-core.test.js +218 -0
  56. package/pi-extension/tests/integration/pi-extension.test.js +430 -2478
  57. package/pi-extension/tests/integration/prompt-architecture.test.js +124 -79
  58. package/pi-extension/tests/integration/unaffected-regressions.test.js +411 -0
  59. package/plugin.json +33 -0
  60. package/runtime/prompts/cognitive-routing.md +5 -4
  61. package/runtime/prompts/conversation-history.md +1 -1
  62. package/runtime/prompts/core.md +77 -6
  63. package/runtime/prompts/interaction-contract.md +6 -2
  64. package/skills/action-selection/SKILL.md +93 -44
  65. package/skills/action-selection/references/trajectory-stalls.md +71 -0
  66. package/skills/bypass/SKILL.md +109 -39
  67. package/skills/commit-work/SKILL.md +94 -55
  68. package/skills/commit-work/references/git-state-edges.md +94 -0
  69. package/skills/commit-work/references/simple-push.md +92 -0
  70. package/skills/commit-work/references/staging-decisions.md +79 -46
  71. package/skills/decision-gate/SKILL.md +80 -22
  72. package/skills/design-for-depth/SKILL.md +208 -43
  73. package/skills/design-for-depth/references/design-pressure-signals.md +108 -240
  74. package/skills/design-for-depth/references/interface-design-loop.md +77 -97
  75. package/skills/design-for-depth/references/module-and-dependency-design.md +147 -0
  76. package/skills/design-for-depth/references/software-design-philosophy.md +127 -173
  77. package/skills/design-for-depth/references/state-and-failure-boundaries.md +136 -0
  78. package/skills/diagnose-failure/SKILL.md +198 -52
  79. package/skills/diagnose-failure/references/diagnostic-loop-catalog.md +19 -5
  80. package/skills/diagnose-failure/references/flaky-and-performance-diagnosis.md +13 -5
  81. package/skills/discuss/SKILL.md +118 -76
  82. package/skills/discuss/references/discussion-continuity.md +84 -32
  83. package/skills/evaluate-skill/SKILL.md +166 -52
  84. package/skills/evaluate-skill/references/evaluation-definition-schema.md +2 -2
  85. package/skills/evaluate-skill/references/evaluation-design.md +56 -30
  86. package/skills/evaluate-skill/references/execution-and-evidence.md +1 -1
  87. package/skills/evaluate-skill/references/review-and-revision.md +62 -21
  88. package/skills/execute-work/SKILL.md +98 -59
  89. package/skills/execute-work/references/code-practices.md +4 -4
  90. package/skills/execute-work/references/execute-work-edges.md +42 -22
  91. package/skills/review-artifact/SKILL.md +132 -71
  92. package/skills/review-artifact/references/adjudicate-artifact-review.md +101 -0
  93. package/skills/review-artifact/references/independent-artifact-reviewer-contract.md +52 -41
  94. package/skills/review-work/SKILL.md +115 -72
  95. package/skills/review-work/references/adjudicate-work-review.md +97 -0
  96. package/skills/review-work/references/independent-work-reviewer-contract.md +40 -35
  97. package/skills/review-work/references/security-risk-lens.md +17 -15
  98. package/skills/setup-freeflow/SKILL.md +14 -17
  99. package/skills/setup-freeflow/references/activation-contract.md +24 -30
  100. package/skills/setup-freeflow/references/host-setup.md +6 -7
  101. package/skills/simplify-code/SKILL.md +97 -39
  102. package/skills/simplify-code/references/simplification-patterns.md +1 -1
  103. package/skills/tdd/SKILL.md +108 -41
  104. package/skills/tdd/references/test-design.md +1 -1
  105. package/skills/track-work/SKILL.md +133 -300
  106. package/skills/track-work/references/working-record-format.md +515 -0
  107. package/skills/track-work/scripts/lib/document.mjs +713 -0
  108. package/skills/track-work/scripts/lib/format.mjs +166 -0
  109. package/skills/track-work/scripts/lib/store.mjs +233 -0
  110. package/skills/track-work/scripts/lib/transitions.mjs +790 -0
  111. package/skills/track-work/scripts/lib/views.mjs +27 -430
  112. package/skills/track-work/scripts/working-record.mjs +292 -98
  113. package/skills/verify-work/SKILL.md +46 -20
  114. package/skills/verify-work/references/browser-runtime-evidence.md +1 -1
  115. package/skills/verify-work/references/integration-evidence.md +1 -7
  116. package/skills/verify-work/references/performance-evidence.md +1 -1
  117. package/skills/workflow/SKILL.md +110 -80
  118. package/skills/workflow/references/domain-skill-composition.md +24 -18
  119. package/skills/write-skill/SKILL.md +218 -62
  120. package/skills/write-skill/references/activation-boundaries.md +63 -21
  121. package/skills/write-skill/references/agent-first-instructions.md +61 -27
  122. package/skills/write-skill/references/progressive-disclosure.md +91 -41
  123. package/skills/write-skill/references/skill-dependency-graphs.md +190 -0
  124. package/runtime/prompts/skills.md +0 -65
  125. package/skills/mode-contract/SKILL.md +0 -104
  126. package/skills/track-work/scripts/lib/codec.mjs +0 -570
  127. package/skills/track-work/scripts/lib/commands.mjs +0 -568
  128. package/skills/track-work/scripts/lib/contract.mjs +0 -303
  129. package/skills/track-work/scripts/lib/model.mjs +0 -506
  130. package/skills/track-work/scripts/lib/operations.mjs +0 -965
  131. package/skills/track-work/scripts/lib/record-store.mjs +0 -264
  132. package/skills/track-work/scripts/lib/result.mjs +0 -37
  133. package/skills/track-work/scripts/lib/rewrites.mjs +0 -740
  134. package/skills/track-work/scripts/lib/schema.mjs +0 -277
  135. package/skills/track-work/scripts/lib/source-inventory.mjs +0 -162
  136. package/skills/track-work/scripts/lib/workspace.mjs +0 -134
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hassangameryt/freeflow",
3
- "version": "0.6.0",
3
+ "version": "0.7.1",
4
4
  "description": "Feedback-based control system for coding agents.",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -22,8 +22,9 @@
22
22
  "build:pi-extension": "tsc -p pi-extension/tsconfig.json && npm run format:pi-extension-dist",
23
23
  "build": "npm run build:pi-extension",
24
24
  "typecheck": "tsc -p pi-extension/tsconfig.json --noEmit",
25
- "check": "npm run typecheck && npm run check:source && npm run check:changelog && npm run check:release-workflow && npm run check:docs && npm run format:check && npm run check:release-version && npm run check:commands && npm run check:activation && npm run check:runtime && npm run check:package",
25
+ "check": "npm run typecheck && npm run check:source && npm run check:host-manifests && npm run check:changelog && npm run check:release-workflow && npm run check:docs && npm run format:check && npm run check:release-version && npm run check:commands && npm run check:activation && npm run check:runtime && npm run check:package",
26
26
  "check:source": "node scripts/validation/check-source-files.mjs",
27
+ "check:host-manifests": "node scripts/validation/check-host-manifests.mjs",
27
28
  "check:changelog": "node scripts/validation/check-changelog.mjs --structure",
28
29
  "check:release-workflow": "node scripts/validation/check-release-workflow.mjs",
29
30
  "check:docs": "node scripts/validation/check-docs.mjs",
@@ -34,6 +35,7 @@
34
35
  "check:package": "node scripts/validation/check-package.mjs",
35
36
  "check:release-metadata": "scripts/validation/validate-release-metadata.sh --mode prepublish",
36
37
  "test:pi-extension": "npm run build && node --test $(find pi-extension/tests -name '*.test.js' | sort)",
38
+ "test:host-manifests": "node --test scripts/validation/check-host-manifests.test.mjs hooks/tests/check-host-adapters.test.mjs",
37
39
  "test:skill-author": "node --test $(find .skill-eval/write-skill/tests -name '*.test.mjs' | sort)",
38
40
  "test:skill-eval": "node --test $(find .skill-eval/evaluate-skill/tests -name '*.test.mjs' | sort)",
39
41
  "test:track-work": "node --test .skill-eval/track-work/tests/*.test.mjs",
@@ -59,7 +61,15 @@
59
61
  "review",
60
62
  "codex",
61
63
  "claude",
62
- "pi"
64
+ "pi",
65
+ "agent-plugins",
66
+ "gemini",
67
+ "cursor",
68
+ "copilot",
69
+ "vscode",
70
+ "kiro",
71
+ "opencode",
72
+ "hermes"
63
73
  ],
64
74
  "pi": {
65
75
  "skills": [],
@@ -69,9 +79,13 @@
69
79
  "image": "https://raw.githubusercontent.com/hassan-mohiddin/freeflow/main/assets/freeflow-plugin-icon-transparent.png"
70
80
  },
71
81
  "files": [
82
+ "plugin.json",
83
+ "gemini-extension.json",
72
84
  ".agents/**",
73
85
  ".claude-plugin/**",
74
86
  ".codex-plugin/**",
87
+ ".cursor-plugin/**",
88
+ "com.github.copilot/**",
75
89
  "LICENSE",
76
90
  "README.md",
77
91
  "assets/**",
@@ -83,10 +97,12 @@
83
97
  "skills/**"
84
98
  ],
85
99
  "peerDependencies": {
100
+ "@earendil-works/pi-coding-agent": "*",
86
101
  "@earendil-works/pi-tui": "*"
87
102
  },
88
103
  "devDependencies": {
89
- "@earendil-works/pi-tui": "0.80.10",
104
+ "@earendil-works/pi-coding-agent": "0.84.4",
105
+ "@earendil-works/pi-tui": "0.84.4",
90
106
  "@types/node": "^22.15.30",
91
107
  "prettier": "3.9.5",
92
108
  "typescript": "^5.8.3"
@@ -9,7 +9,7 @@ export function cognitiveRoutingProfileCompletions(prefix) {
9
9
  label: value,
10
10
  description:
11
11
  value === "auto"
12
- ? "Release the manual hold without changing the model"
12
+ ? "Release the manual hold and use the Reasoning profile"
13
13
  : value === "history"
14
14
  ? "Show Cognitive Routing transition history"
15
15
  : value === "history active"
@@ -50,7 +50,7 @@ export async function handleCognitiveRoutingProfileCommand(args, ctx, controller
50
50
  const result = ctx.history
51
51
  ? await ctx.history(historyView)
52
52
  : controller?.history
53
- ? controller.history(historyView)
53
+ ? await controller.history(historyView)
54
54
  : undefined;
55
55
  if (result) {
56
56
  ctx.ui?.notify?.(formatHistory(result), "info");
@@ -80,7 +80,7 @@ export async function handleCognitiveRoutingProfileCommand(args, ctx, controller
80
80
  if (value === "auto") {
81
81
  const result = await controller.setAutomaticControl();
82
82
  if (result.status === "automatic") {
83
- ctx.ui?.notify?.("Cognitive Routing manual hold released; automatic control is active.", "info");
83
+ ctx.ui?.notify?.("Cognitive Routing manual hold released; automatic Reasoning control is active.", "info");
84
84
  } else {
85
85
  ctx.ui?.notify?.(`Cognitive Routing could not release the manual hold: ${result.reason}.`, "warning");
86
86
  }
@@ -197,29 +197,25 @@ export function resolveCognitiveRoutingConfig(repositoryConfig, personalConfig)
197
197
  let enabledSource = "default";
198
198
  if (repository.enabled !== undefined) enabledSource = "repository";
199
199
  if (personal.enabled !== undefined) enabledSource = "personal";
200
+ const sessionStartControl =
201
+ personal.sessionStart.control ?? repository.sessionStart.control ?? DEFAULT_COGNITIVE_ROUTING_SESSION_START.control;
202
+ const configuredSessionStartProfile =
203
+ personal.sessionStart.profile ?? repository.sessionStart.profile ?? DEFAULT_COGNITIVE_ROUTING_SESSION_START.profile;
200
204
  const sessionStart = {
201
- control:
202
- personal.sessionStart.control ??
203
- repository.sessionStart.control ??
204
- DEFAULT_COGNITIVE_ROUTING_SESSION_START.control,
205
- profile:
206
- personal.sessionStart.profile ??
207
- repository.sessionStart.profile ??
208
- DEFAULT_COGNITIVE_ROUTING_SESSION_START.profile,
205
+ control: sessionStartControl,
206
+ profile: sessionStartControl === "automatic" ? "reasoning" : configuredSessionStartProfile,
209
207
  };
208
+ let sessionStartControlSource = "default";
209
+ if (repository.sessionStart.control !== undefined) sessionStartControlSource = "repository";
210
+ if (personal.sessionStart.control !== undefined) sessionStartControlSource = "personal";
211
+ let sessionStartProfileSource = "default";
212
+ if (sessionStartControl === "manual") {
213
+ if (repository.sessionStart.profile !== undefined) sessionStartProfileSource = "repository";
214
+ if (personal.sessionStart.profile !== undefined) sessionStartProfileSource = "personal";
215
+ }
210
216
  const sessionStartSources = {
211
- control:
212
- personal.sessionStart.control !== undefined
213
- ? "personal"
214
- : repository.sessionStart.control !== undefined
215
- ? "repository"
216
- : "default",
217
- profile:
218
- personal.sessionStart.profile !== undefined
219
- ? "personal"
220
- : repository.sessionStart.profile !== undefined
221
- ? "repository"
222
- : "default",
217
+ control: sessionStartControlSource,
218
+ profile: sessionStartProfileSource,
223
219
  };
224
220
  const error = repository.error ?? personal.error;
225
221
  return {