@kontourai/flow-agents 1.1.0 → 1.2.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/.github/workflows/runtime-compat.yml +5 -2
- package/CHANGELOG.md +26 -0
- package/README.md +26 -5
- package/build/src/cli/{flow-kit.js → kit.js} +122 -108
- package/build/src/cli/validate-source-tree.js +4 -4
- package/build/src/cli.js +3 -3
- package/build/src/flow-kit/validate.js +58 -62
- package/build/src/tools/build-universal-bundles.js +64 -17
- package/build/src/tools/generate-context-map.js +49 -7
- package/build/src/tools/validate-source-tree.js +32 -1
- package/docs/adr/0007-flow-skill-kit-tool-boundary.md +169 -0
- package/docs/adr/0007-skill-audit.md +112 -0
- package/docs/adr/0008-kit-operation-boundary.md +88 -0
- package/docs/context-map.md +18 -22
- package/docs/flow-kit-repository-contract.md +5 -5
- package/docs/getting-started.md +177 -0
- package/docs/index.md +19 -8
- package/docs/kit-authoring-guide.md +26 -7
- package/docs/knowledge-kit.md +2 -2
- package/docs/spec/runtime-hook-surface.md +1 -1
- package/docs/vision.md +1 -1
- package/docs/workflow-usage-guide.md +1 -1
- package/evals/fixtures/builder-kit-workflow-state/happy-path.json +2 -2
- package/evals/fixtures/builder-kit-workflow-state/mid-work-resume.json +2 -2
- package/evals/fixtures/console-learning-projection/artifacts/console-learning-correction/learning.json +1 -1
- package/evals/fixtures/pull-work-provider/github-issues.json +5 -5
- package/evals/integration/test_activate_npx_context.sh +2 -2
- package/evals/integration/test_bundle_install.sh +17 -12
- package/evals/integration/test_console_learning_projection.sh +1 -1
- package/evals/integration/test_flow_kit_install_git.sh +7 -7
- package/evals/integration/test_flow_kit_repository.sh +4 -4
- package/evals/integration/test_kit_conformance_levels.sh +1 -1
- package/evals/integration/test_local_flow_kit_install.sh +7 -7
- package/evals/integration/test_publish_change_helper.sh +1 -1
- package/evals/integration/test_pull_work_provider.sh +1 -1
- package/evals/integration/test_runtime_adapter_activation.sh +3 -3
- package/evals/lib/node.sh +2 -2
- package/evals/static/test_workflow_skills.sh +15 -15
- package/integrations/strands/flow_agents_strands/steering.py +1 -1
- package/integrations/strands-ts/src/hooks.ts +1 -1
- package/kits/builder/kit.json +17 -0
- package/{skills → kits/builder/skills}/builder-shape/SKILL.md +4 -4
- package/{skills → kits/builder/skills}/idea-to-backlog/SKILL.md +1 -1
- package/kits/knowledge/kit.json +16 -9
- package/package.json +8 -5
- package/packaging/packs.json +1 -21
- package/scripts/README.md +1 -1
- package/scripts/kit.js +2 -0
- package/skills/README.md +23 -0
- package/src/cli/{flow-kit.ts → kit.ts} +124 -109
- package/src/cli/validate-source-tree.ts +4 -4
- package/src/cli.ts +3 -3
- package/src/flow-kit/validate.ts +63 -57
- package/src/tools/build-universal-bundles.ts +60 -13
- package/src/tools/generate-context-map.ts +36 -6
- package/src/tools/validate-source-tree.ts +27 -1
- package/scripts/flow-kit.js +0 -2
- package/skills/context-budget/SKILL.md +0 -40
- package/skills/explore/SKILL.md +0 -137
- package/skills/feedback-loop/SKILL.md +0 -87
- package/skills/frontend-design/SKILL.md +0 -80
- /package/{skills → kits/builder/skills}/deliver/SKILL.md +0 -0
- /package/{skills → kits/builder/skills}/design-probe/SKILL.md +0 -0
- /package/{skills → kits/builder/skills}/evidence-gate/SKILL.md +0 -0
- /package/{skills → kits/builder/skills}/execute-plan/SKILL.md +0 -0
- /package/{skills → kits/builder/skills}/fix-bug/SKILL.md +0 -0
- /package/{skills → kits/builder/skills}/learning-review/SKILL.md +0 -0
- /package/{skills → kits/builder/skills}/pickup-probe/SKILL.md +0 -0
- /package/{skills → kits/builder/skills}/plan-work/SKILL.md +0 -0
- /package/{skills → kits/builder/skills}/pull-work/SKILL.md +0 -0
- /package/{skills → kits/builder/skills}/release-readiness/SKILL.md +0 -0
- /package/{skills → kits/builder/skills}/review-work/SKILL.md +0 -0
- /package/{skills → kits/builder/skills}/tdd-workflow/SKILL.md +0 -0
- /package/{skills → kits/builder/skills}/verify-work/SKILL.md +0 -0
- /package/{skills → kits/knowledge/skills}/knowledge-capture/SKILL.md +0 -0
|
@@ -310,20 +310,20 @@ NODE
|
|
|
310
310
|
done
|
|
311
311
|
|
|
312
312
|
for dir in "$KIRO_DEST" "$BASE_DEST" "$CLAUDE_DEST" "$CODEX_DEST"; do
|
|
313
|
-
if [[ -f "$dir/scripts/
|
|
314
|
-
&& node "$dir/scripts/
|
|
315
|
-
&& node "$dir/scripts/
|
|
316
|
-
&& rg -q 'No local Flow Kits installed' /tmp/
|
|
317
|
-
&& rg -q 'No local Flow Kits installed' /tmp/
|
|
313
|
+
if [[ -f "$dir/scripts/kit.js" ]] \
|
|
314
|
+
&& node "$dir/scripts/kit.js" list --dest "$dir" >/tmp/kit-list.out 2>&1 \
|
|
315
|
+
&& node "$dir/scripts/kit.js" status --dest "$dir" >/tmp/kit-status.out 2>&1 \
|
|
316
|
+
&& rg -q 'No local Flow Kits installed' /tmp/kit-list.out \
|
|
317
|
+
&& rg -q 'No local Flow Kits installed' /tmp/kit-status.out; then
|
|
318
318
|
_pass "$dir includes local Flow Kit CLI and empty list/status works"
|
|
319
319
|
else
|
|
320
320
|
_fail "$dir local Flow Kit CLI list/status smoke failed"
|
|
321
321
|
fi
|
|
322
322
|
done
|
|
323
323
|
|
|
324
|
-
if [[ -f "$CODEX_DEST/scripts/
|
|
324
|
+
if [[ -f "$CODEX_DEST/scripts/kit.js" ]] \
|
|
325
325
|
&& [[ -f "$CODEX_DEST/build/src/runtime-adapters.js" ]] \
|
|
326
|
-
&& node "$CODEX_DEST/scripts/
|
|
326
|
+
&& node "$CODEX_DEST/scripts/kit.js" activate --dest "$CODEX_DEST" --format json >/tmp/codex-runtime-activation.json 2>&1 \
|
|
327
327
|
&& node - "$CODEX_DEST" /tmp/codex-runtime-activation.json <<'NODE'
|
|
328
328
|
const fs = require("node:fs");
|
|
329
329
|
const path = require("node:path");
|
|
@@ -344,7 +344,6 @@ then
|
|
|
344
344
|
_pass "Codex installed bundle activates Builder Kit through codex-local"
|
|
345
345
|
else
|
|
346
346
|
_fail "Codex installed bundle runtime activation failed"
|
|
347
|
-
sed -n '1,180p' /tmp/codex-runtime-activation.json 2>/dev/null || true
|
|
348
347
|
fi
|
|
349
348
|
|
|
350
349
|
if node - "$KIRO_DEST" "$BASE_DEST" "$CLAUDE_DEST" "$CODEX_DEST" <<'NODE'
|
|
@@ -714,8 +713,11 @@ else
|
|
|
714
713
|
_fail "Codex core-pack agent filtering failed"
|
|
715
714
|
fi
|
|
716
715
|
|
|
717
|
-
|
|
718
|
-
|
|
716
|
+
# Kit-owned skills (plan-work, deliver) are always present regardless of pack filter.
|
|
717
|
+
# Pack filtering only prunes skills declared in packs.json (the tool-skills).
|
|
718
|
+
# The development-pack tool-skill agentic-engineering should be pruned in a core-only install.
|
|
719
|
+
if [[ -d "$CODEX_CORE_DEST/.codex/skills/plan-work" && -d "$CODEX_CORE_DEST/.codex/skills/deliver" && ! -d "$CODEX_CORE_DEST/.codex/skills/agentic-engineering" ]]; then
|
|
720
|
+
_pass "Codex core-pack install: kit-skills present, dev-only tool-skill pruned"
|
|
719
721
|
else
|
|
720
722
|
_fail "Codex core-pack skill filtering failed"
|
|
721
723
|
fi
|
|
@@ -746,8 +748,11 @@ else
|
|
|
746
748
|
_fail "opencode core-pack agent filtering failed (tool-planner.md missing)"
|
|
747
749
|
fi
|
|
748
750
|
|
|
749
|
-
|
|
750
|
-
|
|
751
|
+
# Kit-owned skills (plan-work, deliver) are always present regardless of pack filter.
|
|
752
|
+
# Pack filtering only prunes skills declared in packs.json (the tool-skills).
|
|
753
|
+
# The development-pack tool-skill agentic-engineering should be pruned in a core-only install.
|
|
754
|
+
if [[ -d "$OPENCODE_CORE_DEST/.opencode/skills/plan-work" && -d "$OPENCODE_CORE_DEST/.opencode/skills/deliver" && ! -d "$OPENCODE_CORE_DEST/.opencode/skills/agentic-engineering" ]]; then
|
|
755
|
+
_pass "opencode core-pack install: kit-skills present, dev-only tool-skill pruned"
|
|
751
756
|
else
|
|
752
757
|
_fail "opencode core-pack skill filtering failed"
|
|
753
758
|
fi
|
|
@@ -146,7 +146,7 @@ if jq -e '
|
|
|
146
146
|
$ext.routing.deferred == 1 and
|
|
147
147
|
($ext.routing.targets | sort) == ["eval", "skill"] and
|
|
148
148
|
($ext.routing.statuses | sort) == ["deferred", "open"] and
|
|
149
|
-
($ext.routing.refs | sort) == ["github:kontourai/flow-agents#96", "skills/learning-review/SKILL.md"] and
|
|
149
|
+
($ext.routing.refs | sort) == ["github:kontourai/flow-agents#96", "kits/builder/skills/learning-review/SKILL.md"] and
|
|
150
150
|
$ext.correction.needed == true and
|
|
151
151
|
$ext.correction.type == "workflow" and
|
|
152
152
|
$ext.correction.recurrence_key == "console-learning-projection.recurrence-metadata" and
|
|
@@ -14,7 +14,7 @@ trap 'rm -rf "$TMP_DIR"' EXIT
|
|
|
14
14
|
pass() { echo " ✓ $1"; }
|
|
15
15
|
fail() { echo " ✗ $1"; errors=$((errors + 1)); }
|
|
16
16
|
|
|
17
|
-
CLI="$ROOT/scripts/
|
|
17
|
+
CLI="$ROOT/scripts/kit.js"
|
|
18
18
|
VALID_SRC="$ROOT/evals/fixtures/flow-kit-repository/valid-local-kit"
|
|
19
19
|
DEST="$TMP_DIR/install-dest"
|
|
20
20
|
mkdir -p "$DEST"
|
|
@@ -33,7 +33,7 @@ echo " (fixture repo: $FILE_URL)"
|
|
|
33
33
|
|
|
34
34
|
# --- Test 1: basic install-git from file:// URL ---
|
|
35
35
|
install_out="$TMP_DIR/install-git.out"
|
|
36
|
-
if flow_agents_node "$CLI" install
|
|
36
|
+
if flow_agents_node "$CLI" install "$FILE_URL" --dest "$DEST" >"$install_out" 2>&1; then
|
|
37
37
|
pass "install-git from file:// URL succeeds"
|
|
38
38
|
else
|
|
39
39
|
fail "install-git from file:// URL failed"
|
|
@@ -72,7 +72,7 @@ fi
|
|
|
72
72
|
# --- Test 2: idempotent re-install from same URL ---
|
|
73
73
|
idempotent_out="$TMP_DIR/idempotent.out"
|
|
74
74
|
registry_hash_before="$(shasum -a 256 "$REGISTRY" | awk '{print $1}')"
|
|
75
|
-
if flow_agents_node "$CLI" install
|
|
75
|
+
if flow_agents_node "$CLI" install "$FILE_URL" --dest "$DEST" >"$idempotent_out" 2>&1 \
|
|
76
76
|
&& grep -q "already installed" "$idempotent_out" \
|
|
77
77
|
&& [[ "$registry_hash_before" == "$(shasum -a 256 "$REGISTRY" | awk '{print $1}')" ]]; then
|
|
78
78
|
pass "install-git same-URL reinstall is idempotent"
|
|
@@ -93,7 +93,7 @@ cp -R "$VALID_SRC" "$FIXTURE_WORKING2"
|
|
|
93
93
|
git clone -q --bare "$FIXTURE_WORKING2" "$FIXTURE_REPO2"
|
|
94
94
|
FILE_URL2="file://$FIXTURE_REPO2"
|
|
95
95
|
|
|
96
|
-
if flow_agents_node "$CLI" install
|
|
96
|
+
if flow_agents_node "$CLI" install "${FILE_URL2}#v1.0" --dest "$DEST2" >"$ref_out" 2>&1; then
|
|
97
97
|
pass "install-git with #ref fragment succeeds"
|
|
98
98
|
else
|
|
99
99
|
fail "install-git with #ref fragment failed"
|
|
@@ -119,7 +119,7 @@ fi
|
|
|
119
119
|
ref_flag_out="$TMP_DIR/ref-flag.out"
|
|
120
120
|
DEST3="$TMP_DIR/dest-with-ref-flag"
|
|
121
121
|
mkdir -p "$DEST3"
|
|
122
|
-
if flow_agents_node "$CLI" install
|
|
122
|
+
if flow_agents_node "$CLI" install "$FILE_URL2" --ref v1.0 --dest "$DEST3" >"$ref_flag_out" 2>&1; then
|
|
123
123
|
pass "install-git with --ref flag succeeds"
|
|
124
124
|
else
|
|
125
125
|
fail "install-git with --ref flag failed"
|
|
@@ -128,7 +128,7 @@ fi
|
|
|
128
128
|
|
|
129
129
|
# --- Test 5: missing git URL exits non-zero ---
|
|
130
130
|
missing_url_out="$TMP_DIR/missing-url.out"
|
|
131
|
-
if flow_agents_node "$CLI" install
|
|
131
|
+
if flow_agents_node "$CLI" install --dest "$DEST" >"$missing_url_out" 2>&1; then
|
|
132
132
|
fail "install-git with no URL should exit non-zero"
|
|
133
133
|
sed -n '1,40p' "$missing_url_out"
|
|
134
134
|
else
|
|
@@ -137,7 +137,7 @@ fi
|
|
|
137
137
|
|
|
138
138
|
# --- Test 6: invalid git URL exits non-zero ---
|
|
139
139
|
invalid_url_out="$TMP_DIR/invalid-url.out"
|
|
140
|
-
if flow_agents_node "$CLI" install
|
|
140
|
+
if flow_agents_node "$CLI" install "file:///nonexistent-repo-that-does-not-exist" --dest "$DEST" >"$invalid_url_out" 2>&1; then
|
|
141
141
|
fail "install-git with invalid URL should exit non-zero"
|
|
142
142
|
sed -n '1,40p' "$invalid_url_out"
|
|
143
143
|
else
|
|
@@ -55,15 +55,15 @@ echo "=== Flow Kit Repository Fixture Checks ==="
|
|
|
55
55
|
expect_pass "valid-local-kit"
|
|
56
56
|
expect_fail "invalid-schema-version" '\.schema_version must be "1\.0"'
|
|
57
57
|
expect_fail "invalid-missing-schema-version" '\.schema_version must be "1\.0"'
|
|
58
|
-
expect_fail "invalid-id" '\.id must be a
|
|
59
|
-
expect_fail "invalid-missing-id" '\.id must be a
|
|
58
|
+
expect_fail "invalid-id" '\.id must be a kebab-case string'
|
|
59
|
+
expect_fail "invalid-missing-id" '\.id must be a kebab-case string'
|
|
60
60
|
expect_fail "invalid-name" '\.name must be a non-empty string'
|
|
61
61
|
expect_fail "invalid-missing-flow" 'flows\[0\]\.path points at missing Flow Definition'
|
|
62
62
|
expect_fail "invalid-absolute-path" 'flows\[0\]\.path must be relative'
|
|
63
|
-
expect_fail "invalid-traversal" "flows\\[0\\]\\.path must
|
|
63
|
+
expect_fail "invalid-traversal" "flows\\[0\\]\\.path must not contain"
|
|
64
64
|
expect_fail "invalid-malformed-json" 'invalid JSON'
|
|
65
65
|
expect_fail "invalid-asset-section" '\.docs must be a list'
|
|
66
|
-
expect_fail "invalid-duplicate-flow" "flows\\[1\\]\\.
|
|
66
|
+
expect_fail "invalid-duplicate-flow" "flows\\[1\\]\\.path duplicates"
|
|
67
67
|
|
|
68
68
|
echo ""
|
|
69
69
|
echo "=== Builder Kit Shared Validation Check ==="
|
|
@@ -23,7 +23,7 @@ run_inspect() {
|
|
|
23
23
|
local output="$2"
|
|
24
24
|
# Route through the main CLI to avoid import.meta.url path-resolution issues.
|
|
25
25
|
flow_agents_build_ts 2>/dev/null
|
|
26
|
-
node "$FLOW_AGENTS_EVAL_ROOT/build/src/cli.js"
|
|
26
|
+
node "$FLOW_AGENTS_EVAL_ROOT/build/src/cli.js" kit inspect "$kit_dir" >"$output" 2>&1
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
# ===================================================================
|
|
@@ -12,7 +12,7 @@ trap 'rm -rf "$TMP_DIR"' EXIT
|
|
|
12
12
|
pass() { echo " ✓ $1"; }
|
|
13
13
|
fail() { echo " ✗ $1"; errors=$((errors + 1)); }
|
|
14
14
|
|
|
15
|
-
CLI="$ROOT/scripts/
|
|
15
|
+
CLI="$ROOT/scripts/kit.js"
|
|
16
16
|
VALID_SRC="$ROOT/evals/fixtures/flow-kit-repository/valid-local-kit"
|
|
17
17
|
INVALID_SRC="$ROOT/evals/fixtures/flow-kit-repository/invalid-missing-flow"
|
|
18
18
|
DEST="$TMP_DIR/install-dest"
|
|
@@ -23,7 +23,7 @@ mkdir -p "$DEST"
|
|
|
23
23
|
echo "=== Local Flow Kit Install Checks ==="
|
|
24
24
|
|
|
25
25
|
install_output="$TMP_DIR/install.out"
|
|
26
|
-
if flow_agents_node "$CLI" install
|
|
26
|
+
if flow_agents_node "$CLI" install "$VALID_SRC" --dest "$DEST" >"$install_output" 2>&1; then
|
|
27
27
|
pass "valid local kit installs into temp destination"
|
|
28
28
|
else
|
|
29
29
|
fail "valid local kit install failed"
|
|
@@ -52,7 +52,7 @@ fi
|
|
|
52
52
|
|
|
53
53
|
registry_hash_before_invalid="$(shasum -a 256 "$REGISTRY" | awk '{print $1}')"
|
|
54
54
|
invalid_output="$TMP_DIR/invalid.out"
|
|
55
|
-
if flow_agents_node "$CLI" install
|
|
55
|
+
if flow_agents_node "$CLI" install "$INVALID_SRC" --dest "$DEST" >"$invalid_output" 2>&1; then
|
|
56
56
|
fail "invalid local kit install should fail"
|
|
57
57
|
sed -n '1,160p' "$invalid_output"
|
|
58
58
|
elif rg -q 'Flow Kit repository validation failed' "$invalid_output" \
|
|
@@ -65,7 +65,7 @@ fi
|
|
|
65
65
|
|
|
66
66
|
registry_hash_before_idempotent="$(shasum -a 256 "$REGISTRY" | awk '{print $1}')"
|
|
67
67
|
idempotent_output="$TMP_DIR/idempotent.out"
|
|
68
|
-
if flow_agents_node "$CLI" install
|
|
68
|
+
if flow_agents_node "$CLI" install "$VALID_SRC" --dest "$DEST" >"$idempotent_output" 2>&1 \
|
|
69
69
|
&& rg -q "already installed" "$idempotent_output" \
|
|
70
70
|
&& [[ "$registry_hash_before_idempotent" == "$(shasum -a 256 "$REGISTRY" | awk '{print $1}')" ]]; then
|
|
71
71
|
pass "same-source reinstall is idempotent"
|
|
@@ -79,7 +79,7 @@ cp -R "$VALID_SRC" "$CONFLICT_SRC"
|
|
|
79
79
|
printf '\nconflict copy\n' >> "$CONFLICT_SRC/docs/README.md"
|
|
80
80
|
conflict_output="$TMP_DIR/conflict.out"
|
|
81
81
|
registry_hash_before_conflict="$(shasum -a 256 "$REGISTRY" | awk '{print $1}')"
|
|
82
|
-
if flow_agents_node "$CLI" install
|
|
82
|
+
if flow_agents_node "$CLI" install "$CONFLICT_SRC" --dest "$DEST" >"$conflict_output" 2>&1; then
|
|
83
83
|
fail "different source with existing kit id should conflict"
|
|
84
84
|
sed -n '1,160p' "$conflict_output"
|
|
85
85
|
elif rg -q 'conflict: kit' "$conflict_output" \
|
|
@@ -91,7 +91,7 @@ else
|
|
|
91
91
|
fi
|
|
92
92
|
|
|
93
93
|
force_conflict_output="$TMP_DIR/force-conflict.out"
|
|
94
|
-
if flow_agents_node "$CLI" install
|
|
94
|
+
if flow_agents_node "$CLI" install "$CONFLICT_SRC" --dest "$DEST" --force >"$force_conflict_output" 2>&1; then
|
|
95
95
|
fail "--force should not replace a different-source duplicate id"
|
|
96
96
|
sed -n '1,160p' "$force_conflict_output"
|
|
97
97
|
elif rg -q 'conflict: kit' "$force_conflict_output" \
|
|
@@ -103,7 +103,7 @@ else
|
|
|
103
103
|
fi
|
|
104
104
|
|
|
105
105
|
update_output="$TMP_DIR/update.out"
|
|
106
|
-
if flow_agents_node "$CLI" install
|
|
106
|
+
if flow_agents_node "$CLI" install "$CONFLICT_SRC" --dest "$DEST" --update >"$update_output" 2>&1 \
|
|
107
107
|
&& rg -q "updated local kit" "$update_output" \
|
|
108
108
|
&& rg -q "$CONFLICT_SRC" "$REGISTRY"; then
|
|
109
109
|
pass "explicit update replaces duplicate id source"
|
|
@@ -112,7 +112,7 @@ status=$?
|
|
|
112
112
|
|
|
113
113
|
for risk in runtime schema package hook security; do
|
|
114
114
|
case "$risk" in
|
|
115
|
-
runtime) path="scripts/
|
|
115
|
+
runtime) path="scripts/kit.js" ;;
|
|
116
116
|
schema) path="schemas/workflow-evidence.schema.json" ;;
|
|
117
117
|
package) path="package.json" ;;
|
|
118
118
|
hook) path="scripts/hooks/quality-gate.js" ;;
|
|
@@ -52,7 +52,7 @@ status=$?
|
|
|
52
52
|
[[ "$(json_query "$TMPDIR_EVAL/normalized.json" "items.5.planned_base_sha")" == "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ]] && pass "marker normalizes planned_base_sha" || fail "marker normalizes planned_base_sha"
|
|
53
53
|
[[ "$(json_query "$TMPDIR_EVAL/normalized.json" "items.5.planned_at")" == "2026-06-03T03:23:14Z" ]] && pass "marker normalizes planned_at" || fail "marker normalizes planned_at"
|
|
54
54
|
[[ "$(json_query "$TMPDIR_EVAL/normalized.json" "items.5.planning_artifact_ref")" == ".flow-agents/idea-to-backlog-source-revision-structured-blockers/idea-to-backlog-source-revision-structured-blockers--plan.md" ]] && pass "marker normalizes planning_artifact_ref" || fail "marker normalizes planning_artifact_ref"
|
|
55
|
-
[[ "$(json_query "$TMPDIR_EVAL/normalized.json" "items.5.planning_scope_refs.0")" == "skills/idea-to-backlog/SKILL.md" ]] && pass "marker normalizes planning_scope_refs" || fail "marker normalizes planning_scope_refs"
|
|
55
|
+
[[ "$(json_query "$TMPDIR_EVAL/normalized.json" "items.5.planning_scope_refs.0")" == "kits/builder/skills/idea-to-backlog/SKILL.md" ]] && pass "marker normalizes planning_scope_refs" || fail "marker normalizes planning_scope_refs"
|
|
56
56
|
[[ "$(json_query "$TMPDIR_EVAL/normalized.json" "items.5.source_revisions.1.repo")" == "kontourai/flow" ]] && pass "marker preserves repo-scoped source_revisions" || fail "marker preserves repo-scoped source_revisions"
|
|
57
57
|
[[ "$(json_query "$TMPDIR_EVAL/normalized.json" "items.5.blockers.0.ref.owner")" == "kontourai" ]] && pass "structured blocker preserves provider owner" || fail "structured blocker preserves provider owner"
|
|
58
58
|
[[ "$(json_query "$TMPDIR_EVAL/normalized.json" "items.5.blockers.0.ref.repo")" == "flow" ]] && pass "structured blocker preserves provider repo" || fail "structured blocker preserves provider repo"
|
|
@@ -12,7 +12,7 @@ trap 'rm -rf "$TMP_DIR"' EXIT
|
|
|
12
12
|
pass() { echo " ✓ $1"; }
|
|
13
13
|
fail() { echo " ✗ $1"; errors=$((errors + 1)); }
|
|
14
14
|
|
|
15
|
-
CLI="$ROOT/scripts/
|
|
15
|
+
CLI="$ROOT/scripts/kit.js"
|
|
16
16
|
DEST="$TMP_DIR/runtime-dest"
|
|
17
17
|
MIXED_SRC="$ROOT/evals/fixtures/flow-kit-repository/mixed-runtime-kit"
|
|
18
18
|
OUT="$TMP_DIR/activation.json"
|
|
@@ -22,7 +22,7 @@ mkdir -p "$DEST"
|
|
|
22
22
|
|
|
23
23
|
echo "=== Runtime Adapter Activation Checks ==="
|
|
24
24
|
|
|
25
|
-
if flow_agents_node "$CLI" install
|
|
25
|
+
if flow_agents_node "$CLI" install "$MIXED_SRC" --dest "$DEST" >"$TMP_DIR/install.out" 2>&1; then
|
|
26
26
|
pass "mixed local kit installs into temp destination"
|
|
27
27
|
else
|
|
28
28
|
fail "mixed local kit install failed"
|
|
@@ -146,7 +146,7 @@ STRANDS_OUT="$TMP_DIR/strands-activation.json"
|
|
|
146
146
|
mkdir -p "$STRANDS_DEST"
|
|
147
147
|
|
|
148
148
|
# Install the mixed kit into strands dest so we can assert skills land there too
|
|
149
|
-
if flow_agents_node "$CLI" install
|
|
149
|
+
if flow_agents_node "$CLI" install "$MIXED_SRC" --dest "$STRANDS_DEST" >"$TMP_DIR/strands-install.out" 2>&1; then
|
|
150
150
|
pass "mixed local kit installs into strands temp destination"
|
|
151
151
|
else
|
|
152
152
|
fail "mixed local kit install failed (strands dest)"
|
package/evals/lib/node.sh
CHANGED
|
@@ -45,10 +45,10 @@ flow_agents_node() {
|
|
|
45
45
|
node "$FLOW_AGENTS_EVAL_ROOT/build/src/cli/validate-source-tree.js" "$@"
|
|
46
46
|
return
|
|
47
47
|
;;
|
|
48
|
-
*/scripts/
|
|
48
|
+
*/scripts/kit.js|scripts/kit.js)
|
|
49
49
|
shift
|
|
50
50
|
flow_agents_build_ts || return
|
|
51
|
-
node "$FLOW_AGENTS_EVAL_ROOT/build/src/cli/
|
|
51
|
+
node "$FLOW_AGENTS_EVAL_ROOT/build/src/cli/kit.js" "$@"
|
|
52
52
|
return
|
|
53
53
|
;;
|
|
54
54
|
*/scripts/effective-backlog-settings.js|scripts/effective-backlog-settings.js)
|
|
@@ -52,19 +52,19 @@ require_status() {
|
|
|
52
52
|
|
|
53
53
|
echo "=== Workflow Skill Contract Checks ==="
|
|
54
54
|
|
|
55
|
-
IDEA="$ROOT/skills/idea-to-backlog/SKILL.md"
|
|
56
|
-
BUILDER_SHAPE="$ROOT/skills/builder-shape/SKILL.md"
|
|
57
|
-
PULL="$ROOT/skills/pull-work/SKILL.md"
|
|
58
|
-
DESIGN_PROBE="$ROOT/skills/design-probe/SKILL.md"
|
|
59
|
-
PICKUP_PROBE="$ROOT/skills/pickup-probe/SKILL.md"
|
|
60
|
-
EVIDENCE="$ROOT/skills/evidence-gate/SKILL.md"
|
|
61
|
-
RELEASE="$ROOT/skills/release-readiness/SKILL.md"
|
|
62
|
-
LEARNING="$ROOT/skills/learning-review/SKILL.md"
|
|
63
|
-
DELIVER="$ROOT/skills/deliver/SKILL.md"
|
|
64
|
-
PLAN_WORK="$ROOT/skills/plan-work/SKILL.md"
|
|
65
|
-
EXECUTE_PLAN="$ROOT/skills/execute-plan/SKILL.md"
|
|
66
|
-
REVIEW_WORK="$ROOT/skills/review-work/SKILL.md"
|
|
67
|
-
VERIFY_WORK="$ROOT/skills/verify-work/SKILL.md"
|
|
55
|
+
IDEA="$ROOT/kits/builder/skills/idea-to-backlog/SKILL.md"
|
|
56
|
+
BUILDER_SHAPE="$ROOT/kits/builder/skills/builder-shape/SKILL.md"
|
|
57
|
+
PULL="$ROOT/kits/builder/skills/pull-work/SKILL.md"
|
|
58
|
+
DESIGN_PROBE="$ROOT/kits/builder/skills/design-probe/SKILL.md"
|
|
59
|
+
PICKUP_PROBE="$ROOT/kits/builder/skills/pickup-probe/SKILL.md"
|
|
60
|
+
EVIDENCE="$ROOT/kits/builder/skills/evidence-gate/SKILL.md"
|
|
61
|
+
RELEASE="$ROOT/kits/builder/skills/release-readiness/SKILL.md"
|
|
62
|
+
LEARNING="$ROOT/kits/builder/skills/learning-review/SKILL.md"
|
|
63
|
+
DELIVER="$ROOT/kits/builder/skills/deliver/SKILL.md"
|
|
64
|
+
PLAN_WORK="$ROOT/kits/builder/skills/plan-work/SKILL.md"
|
|
65
|
+
EXECUTE_PLAN="$ROOT/kits/builder/skills/execute-plan/SKILL.md"
|
|
66
|
+
REVIEW_WORK="$ROOT/kits/builder/skills/review-work/SKILL.md"
|
|
67
|
+
VERIFY_WORK="$ROOT/kits/builder/skills/verify-work/SKILL.md"
|
|
68
68
|
MAP="$ROOT/docs/skills-map.md"
|
|
69
69
|
ROOT_CONTEXT="$ROOT/CONTEXT.md"
|
|
70
70
|
CONTEXT_MAP="$ROOT/docs/context-map.md"
|
|
@@ -146,6 +146,7 @@ while IFS= read -r guidance_surface; do
|
|
|
146
146
|
done < <(
|
|
147
147
|
{
|
|
148
148
|
find "$ROOT/skills" -type f -name '*.md'
|
|
149
|
+
find "$ROOT/kits" -path "*/skills/*/SKILL.md" -type f
|
|
149
150
|
find "$ROOT/context/contracts" -maxdepth 1 -type f -name '*.md'
|
|
150
151
|
find "$ROOT/agents" -maxdepth 1 -type f -name '*.json'
|
|
151
152
|
printf '%s\n' "$ROOT/packaging/manifest.json"
|
|
@@ -553,7 +554,7 @@ echo ""
|
|
|
553
554
|
echo "--- builder-shape ---"
|
|
554
555
|
require_text "$BUILDER_SHAPE" '^name: "builder-shape"$' "frontmatter name"
|
|
555
556
|
require_text "$BUILDER_SHAPE" 'Builder Kit `shape` flow' "defines Builder Kit shape product surface"
|
|
556
|
-
require_text "$BUILDER_SHAPE" 'skills/idea-to-backlog/SKILL.md' "delegates to idea-to-backlog"
|
|
557
|
+
require_text "$BUILDER_SHAPE" 'kits/builder/skills/idea-to-backlog/SKILL.md' "delegates to idea-to-backlog"
|
|
557
558
|
require_text "$BUILDER_SHAPE" 'kits/builder/flows/shape.flow.json' "links Builder Kit Flow Definition"
|
|
558
559
|
require_text "$BUILDER_SHAPE" 'raw idea.*current conversation context|current conversation context.*raw idea' "accepts raw idea or conversation context"
|
|
559
560
|
require_text "$BUILDER_SHAPE" 'Probe/alignment' "uses Probe alignment language"
|
|
@@ -1102,7 +1103,6 @@ require_text "$PACKS_MANIFEST" '"name": "core"' "pack manifest defines core pack
|
|
|
1102
1103
|
require_text "$PACKS_MANIFEST" '"default": true' "pack manifest defines default pack"
|
|
1103
1104
|
require_text "$PACKS_MANIFEST" '"name": "development"' "pack manifest defines development pack"
|
|
1104
1105
|
require_text "$PACKS_MANIFEST" '"eval-rebuild"' "pack manifest includes eval-rebuild"
|
|
1105
|
-
require_text "$PACKS_MANIFEST" '"explore"' "pack manifest includes explore"
|
|
1106
1106
|
require_text "$ROOT/scripts/build-universal-bundles.js" 'FLOW_AGENTS_PACKS' "bundle installer supports pack filtering"
|
|
1107
1107
|
require_text "$ROOT/evals/integration/test_bundle_install.sh" 'core-pack install keeps core agents' "bundle install test covers pack filtering"
|
|
1108
1108
|
require_text "$CONTEXT_MAP" 'Context Loading Rules' "context map includes loading rules"
|
|
@@ -211,7 +211,7 @@ class SteeringContext:
|
|
|
211
211
|
"""
|
|
212
212
|
Surface activated kit flows from the strands-local runtime path.
|
|
213
213
|
|
|
214
|
-
Reads .flow-agents/runtime/strands/flows/ (written by `flow-kit activate
|
|
214
|
+
Reads .flow-agents/runtime/strands/flows/ (written by `flow-agents kit activate
|
|
215
215
|
--adapter strands-local`) and emits a brief hint listing active kit flows
|
|
216
216
|
by id and description so the agent is aware of available workflow guidance.
|
|
217
217
|
"""
|
|
@@ -189,7 +189,7 @@ export class FlowAgentsHooks {
|
|
|
189
189
|
*
|
|
190
190
|
* Includes activated kit flows discovered from the strands-local runtime
|
|
191
191
|
* path (.flow-agents/runtime/strands/flows/) written by
|
|
192
|
-
* `flow-kit activate --adapter strands-local`.
|
|
192
|
+
* `flow-agents kit activate --adapter strands-local`.
|
|
193
193
|
*
|
|
194
194
|
* Callers should prepend this to the Agent's system prompt:
|
|
195
195
|
*
|
package/kits/builder/kit.json
CHANGED
|
@@ -15,5 +15,22 @@
|
|
|
15
15
|
"path": "flows/build.flow.json",
|
|
16
16
|
"description": "Pull ready work through design probing, planning, implementation, verification, pull request readiness, merge readiness, and learning."
|
|
17
17
|
}
|
|
18
|
+
],
|
|
19
|
+
"skills": [
|
|
20
|
+
{ "id": "builder.builder-shape", "path": "skills/builder-shape/SKILL.md", "description": "Invoke Builder Kit shape from a raw idea or the current conversation context." },
|
|
21
|
+
{ "id": "builder.deliver", "path": "skills/deliver/SKILL.md", "description": "Delivery workflow — selected work to delivered code." },
|
|
22
|
+
{ "id": "builder.design-probe", "path": "skills/design-probe/SKILL.md", "description": "One-question-at-a-time design probing interview." },
|
|
23
|
+
{ "id": "builder.evidence-gate", "path": "skills/evidence-gate/SKILL.md", "description": "Evaluate whether completed work is trustworthy enough for human review, merge, or release." },
|
|
24
|
+
{ "id": "builder.execute-plan", "path": "skills/execute-plan/SKILL.md", "description": "Parallel execution primitive — plan artifact path to implemented code." },
|
|
25
|
+
{ "id": "builder.fix-bug", "path": "skills/fix-bug/SKILL.md", "description": "Bug fix orchestrator — diagnose, plan, execute, review, verify, loop." },
|
|
26
|
+
{ "id": "builder.idea-to-backlog", "path": "skills/idea-to-backlog/SKILL.md", "description": "Turn raw ideas into shaped, prioritized, executable GitHub issue backlog." },
|
|
27
|
+
{ "id": "builder.learning-review", "path": "skills/learning-review/SKILL.md", "description": "Capture post-merge learnings and feed them back into backlog, skills, tests, or knowledge." },
|
|
28
|
+
{ "id": "builder.pickup-probe", "path": "skills/pickup-probe/SKILL.md", "description": "Builder Kit work-item/docs/provider-grounded Probe specialization before plan-work." },
|
|
29
|
+
{ "id": "builder.plan-work", "path": "skills/plan-work/SKILL.md", "description": "Code planning primitive — goal + directory to structured execution plan." },
|
|
30
|
+
{ "id": "builder.pull-work", "path": "skills/pull-work/SKILL.md", "description": "Select ready GitHub issues from the executable backlog for implementation." },
|
|
31
|
+
{ "id": "builder.release-readiness", "path": "skills/release-readiness/SKILL.md", "description": "Decide whether evidence-backed work is ready to merge, release, deploy, or hold." },
|
|
32
|
+
{ "id": "builder.review-work", "path": "skills/review-work/SKILL.md", "description": "Review primitive — code, security, dependency, architecture critique before verification." },
|
|
33
|
+
{ "id": "builder.tdd-workflow", "path": "skills/tdd-workflow/SKILL.md", "description": "Test-driven development — RED, GREEN, REFACTOR with git checkpoints." },
|
|
34
|
+
{ "id": "builder.verify-work", "path": "skills/verify-work/SKILL.md", "description": "Verification primitive — session file path to structured evidence verdict." }
|
|
18
35
|
]
|
|
19
36
|
}
|
|
@@ -11,7 +11,7 @@ Invoke the Builder Kit `shape` flow for raw product ideas, vague build goals, cu
|
|
|
11
11
|
|
|
12
12
|
- Product surface: let the user ask for "Builder Kit shape", "builder shape", or "shape this with Builder Kit" without naming `idea-to-backlog`.
|
|
13
13
|
- Proactive suggestion: when a user starts planning a feature, product, PRD, roadmap item, or vague build idea without naming a workflow, briefly suggest Builder Kit shape as the structured path before implementation. Phrase it as an option, not a forced gate, unless the request is too ambiguous to plan responsibly.
|
|
14
|
-
- Delegation: use `skills/idea-to-backlog/SKILL.md` as the shaping primitive. Do not duplicate or replace its workflow, artifact contract, issue shape, or gate rules.
|
|
14
|
+
- Delegation: use `kits/builder/skills/idea-to-backlog/SKILL.md` as the shaping primitive. Do not duplicate or replace its workflow, artifact contract, issue shape, or gate rules.
|
|
15
15
|
- Product-level auto-guidance: when the user invokes Builder Kit shape, guide them through `design-probe` alignment and then the `idea-to-backlog` workflow directly; do not require them to type `design-probe` or `idea-to-backlog` as additional skill names.
|
|
16
16
|
- do not require them to type `idea-to-backlog`; Builder Kit shape owns the user-facing route into that primitive.
|
|
17
17
|
- Flow reference: link every Builder Kit shape artifact to the Builder Kit Flow Definition at `kits/builder/flows/shape.flow.json`.
|
|
@@ -19,7 +19,7 @@ Invoke the Builder Kit `shape` flow for raw product ideas, vague build goals, cu
|
|
|
19
19
|
- Probe/alignment: when the idea, user outcome, constraints, non-goals, success signal, risk, or bundle relationship is unclear, run `design-probe` style alignment before continuing.
|
|
20
20
|
- Default stop: stop at the backlog gate by default. Do not create GitHub issues, sync to a project, or hand off to `pull-work` unless the user explicitly asks for that next step.
|
|
21
21
|
- Boundary: do not run Builder Kit build execution, remote kit install, package extraction, downstream delivery workflows, `plan-work`, `execute-plan`, `review-work`, `verify-work`, `evidence-gate`, or release workflows from this invocation.
|
|
22
|
-
- Compatibility: Direct `idea-to-backlog` usage remains valid and should behave exactly as described in `skills/idea-to-backlog/SKILL.md`.
|
|
22
|
+
- Compatibility: Direct `idea-to-backlog` usage remains valid and should behave exactly as described in `kits/builder/skills/idea-to-backlog/SKILL.md`.
|
|
23
23
|
- Primitive recovery: if a user invokes `idea-to-backlog` or another primitive with missing shaping context and appears to want the product flow, explain that Builder Kit shape is the entry point and offer to route there.
|
|
24
24
|
|
|
25
25
|
## Invocation
|
|
@@ -33,7 +33,7 @@ Use this skill when the user says things like:
|
|
|
33
33
|
|
|
34
34
|
When activated:
|
|
35
35
|
|
|
36
|
-
1. Read `skills/idea-to-backlog/SKILL.md`.
|
|
36
|
+
1. Read `kits/builder/skills/idea-to-backlog/SKILL.md`.
|
|
37
37
|
2. State that Builder Kit shape delegates to `idea-to-backlog` and uses `kits/builder/flows/shape.flow.json`.
|
|
38
38
|
3. Gather the raw idea or current conversation context.
|
|
39
39
|
4. If needed, use `design-probe`: ask one Probe/alignment question at a time before shaping. Prefer questions that clarify user outcome, constraints, non-goals, success criteria, risk, or whether bundled ideas truly belong together.
|
|
@@ -72,5 +72,5 @@ For Builder Kit shape invocations, also include:
|
|
|
72
72
|
Issue sync is explicit-only.
|
|
73
73
|
|
|
74
74
|
- If the user did not ask to create or sync issues, set `backlog_links` to `not_requested` or an empty recorded status and stop at the backlog gate.
|
|
75
|
-
- If the user asks to create or sync issues, follow the GitHub issue rules in `skills/idea-to-backlog/SKILL.md`.
|
|
75
|
+
- If the user asks to create or sync issues, follow the GitHub issue rules in `kits/builder/skills/idea-to-backlog/SKILL.md`.
|
|
76
76
|
- If provider details are missing, ask for them instead of assuming a GitHub repository, project, labels, milestone, or assignee.
|
|
@@ -217,7 +217,7 @@ Provider-neutral marker example:
|
|
|
217
217
|
"planned_at": "2026-06-03T03:23:14Z",
|
|
218
218
|
"planning_artifact_ref": ".flow-agents/example/example--idea-to-backlog.md",
|
|
219
219
|
"planning_scope_refs": [
|
|
220
|
-
"skills/idea-to-backlog/SKILL.md",
|
|
220
|
+
"kits/builder/skills/idea-to-backlog/SKILL.md",
|
|
221
221
|
"context/contracts/work-item-contract.md"
|
|
222
222
|
]
|
|
223
223
|
}
|
package/kits/knowledge/kit.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"id": "knowledge",
|
|
4
4
|
"name": "Knowledge Kit",
|
|
5
5
|
"product_name": "Knowledge Kit",
|
|
6
|
-
"description": "A Flow Kit for durable, gated knowledge storage. Provides a store contract with defined record types, mutation operations, and provenance rules
|
|
6
|
+
"description": "A Flow Kit for durable, gated knowledge storage. Provides a store contract with defined record types, mutation operations, and provenance rules — plus a default adapter backed by markdown files, YAML frontmatter, wikilinks, and a graph index.",
|
|
7
7
|
"flows": [
|
|
8
8
|
{
|
|
9
9
|
"id": "knowledge.store-contract",
|
|
@@ -13,17 +13,17 @@
|
|
|
13
13
|
{
|
|
14
14
|
"id": "knowledge.ingest",
|
|
15
15
|
"path": "flows/ingest.flow.json",
|
|
16
|
-
"description": "Ingest raw captures: capture
|
|
16
|
+
"description": "Ingest raw captures: capture → classify → route. Gate on classify requires category + type='raw' classification evidence per the store contract create op."
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
"id": "knowledge.compile",
|
|
20
20
|
"path": "flows/compile.flow.json",
|
|
21
|
-
"description": "Compile classified raws into durable notes: select-raws
|
|
21
|
+
"description": "Compile classified raws into durable notes: select-raws → compile → link. Gate on compile requires provenance refs to every consumed raw record."
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
"id": "knowledge.synthesize",
|
|
25
25
|
"path": "flows/synthesize.flow.json",
|
|
26
|
-
"description": "Synthesize compiled sources into concept summaries: detect-cluster
|
|
26
|
+
"description": "Synthesize compiled sources into concept summaries: detect-cluster → propose → evidence-gate → apply-or-reject. Mutation-gate policy: no summary mutates without an approved proposal carrying source refs; rejection leaves store untouched."
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
"id": "knowledge.consolidate",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
{
|
|
34
34
|
"id": "knowledge.retire",
|
|
35
35
|
"path": "flows/retire.flow.json",
|
|
36
|
-
"description": "Retire implemented or obsolete records from the working set via gated lifecycle: identify
|
|
36
|
+
"description": "Retire implemented or obsolete records from the working set via gated lifecycle: identify → propose-retirement → evidence-gate → apply-or-reject. Evidence required: retirement rationale + implementedByRef (when targeting 'implemented' status) or supersededByRef (optional, for 'retired'). Rejection leaves record status byte-identical. Retired records remain fully queryable with provenance via includeRetired flag."
|
|
37
37
|
}
|
|
38
38
|
],
|
|
39
39
|
"docs": [
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
{
|
|
56
56
|
"id": "knowledge.flow-runner",
|
|
57
57
|
"path": "adapters/flow-runner/index.js",
|
|
58
|
-
"description": "Executable flow logic: capture(rawText, meta)
|
|
58
|
+
"description": "Executable flow logic: capture(rawText, meta) → classified raw record; compile(rawIds[]) → compiled record with provenance links; synthesize(conceptId | topicSelector, options) → concept summary proposal with mutation gate; consolidate(snapshotId | topicSelector, options) → decision snapshot consolidation with supersede-not-delete; retire(recordId, options) → gated status lifecycle transition (active→implemented→retired) with working-set exclusion. Emits canonical telemetry events at gate points."
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
"id": "knowledge.similarity-vector",
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
{
|
|
83
83
|
"id": "knowledge.synthesis-suite",
|
|
84
84
|
"path": "evals/synthesis/suite.test.js",
|
|
85
|
-
"description": "Eval cases for synthesize: AC1 (similar source
|
|
85
|
+
"description": "Eval cases for synthesize: AC1 (similar source → proposal not mutation), AC2 (rejection leaves concept byte-identical), AC3 (apply updates with provenance to all contributing sources), pluggable-similarity interface test, gate telemetry."
|
|
86
86
|
},
|
|
87
87
|
{
|
|
88
88
|
"id": "knowledge.consolidation-suite",
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
{
|
|
93
93
|
"id": "knowledge.similarity-vector-suite",
|
|
94
94
|
"path": "evals/similarity-vector/suite.test.js",
|
|
95
|
-
"description": "Eval cases for the vector similarity adapter: unit tests (cosineSimilarity math, injectable embed, threshold, fail-closed), drop-in proof (runner.synthesize with injected embed produces valid proposals), and live-gated tests (real ollama nomic-embed-text round-trip
|
|
95
|
+
"description": "Eval cases for the vector similarity adapter: unit tests (cosineSimilarity math, injectable embed, threshold, fail-closed), drop-in proof (runner.synthesize with injected embed produces valid proposals), and live-gated tests (real ollama nomic-embed-text round-trip — skipped when ollama unavailable)."
|
|
96
96
|
},
|
|
97
97
|
{
|
|
98
98
|
"id": "knowledge.retirement-suite",
|
|
@@ -102,7 +102,14 @@
|
|
|
102
102
|
{
|
|
103
103
|
"id": "knowledge.entity-cards-suite",
|
|
104
104
|
"path": "evals/entities/suite.test.js",
|
|
105
|
-
"description": "Eval cases for person/entity cards (issue #48): AC1-AC4
|
|
105
|
+
"description": "Eval cases for person/entity cards (issue #48): AC1-AC4 — entity extraction from Attendees lines, exact-match resolution, possible-duplicate detection, merge via propose/apply/reject (union aliases+backlinks, supersede duplicate), Obsidian people/ folder rendering, and extended contract suite (person type validity) on both adapters."
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
"skills": [
|
|
109
|
+
{
|
|
110
|
+
"id": "knowledge.knowledge-capture",
|
|
111
|
+
"path": "skills/knowledge-capture/SKILL.md",
|
|
112
|
+
"description": "Save durable knowledge, lightweight pointers, user corrections, decisions, lessons, and source references into the knowledge base."
|
|
106
113
|
}
|
|
107
114
|
]
|
|
108
115
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kontourai/flow-agents",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Flow Agents — a Kontour product that applies Flow and Veritas discipline as a portable process layer inside the agent tools you already use: Claude Code, Codex, Kiro, opencode, pi, and GitHub Actions — with framework adapters (AWS Strands preview) on the same policy-engine contract.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agents",
|
|
@@ -36,7 +36,6 @@
|
|
|
36
36
|
"flow-agents-context-map": "build/src/cli.js",
|
|
37
37
|
"flow-agents-effective-backlog-settings": "build/src/cli.js",
|
|
38
38
|
"flow-agents-filter-installed-packs": "build/src/cli.js",
|
|
39
|
-
"flow-agents-flow-kit": "build/src/cli.js",
|
|
40
39
|
"flow-agents-fixture-retirement-audit": "build/src/cli.js",
|
|
41
40
|
"flow-agents-promote-workflow-artifact": "build/src/cli.js",
|
|
42
41
|
"flow-agents-publish-change": "build/src/cli.js",
|
|
@@ -49,7 +48,8 @@
|
|
|
49
48
|
"flow-agents-validate-hook-influence": "build/src/cli.js",
|
|
50
49
|
"flow-agents-validate-source": "build/src/cli.js",
|
|
51
50
|
"flow-agents-workflow-artifact-cleanup-audit": "build/src/cli.js",
|
|
52
|
-
"flow-agents-workflow-sidecar": "build/src/cli/workflow-sidecar.js"
|
|
51
|
+
"flow-agents-workflow-sidecar": "build/src/cli/workflow-sidecar.js",
|
|
52
|
+
"flow-agents-kit": "build/src/cli.js"
|
|
53
53
|
},
|
|
54
54
|
"files": [
|
|
55
55
|
".github/",
|
|
@@ -100,7 +100,6 @@
|
|
|
100
100
|
"validate:package": "npm run build --silent && node build/src/cli.js validate-package",
|
|
101
101
|
"workflow:sidecar": "npm run build --silent && node build/src/cli/workflow-sidecar.js",
|
|
102
102
|
"workflow:validate-artifacts": "npm run build --silent && node build/src/cli/validate-workflow-artifacts.js",
|
|
103
|
-
"flow-kit": "npm run build --silent && node build/src/cli.js flow-kit",
|
|
104
103
|
"effective-backlog-settings": "npm run build --silent && node build/src/cli.js effective-backlog-settings",
|
|
105
104
|
"pull-work-provider": "npm run build --silent && node build/src/cli.js pull-work-provider",
|
|
106
105
|
"publish-change": "npm run build --silent && node build/src/cli.js publish-change",
|
|
@@ -125,11 +124,15 @@
|
|
|
125
124
|
"promptfoo": "PROMPTFOO_CONFIG_DIR=.promptfoo PROMPTFOO_DISABLE_WAL_MODE=true PROMPTFOO_DISABLE_TELEMETRY=true promptfoo",
|
|
126
125
|
"promptfoo:view": "PROMPTFOO_CONFIG_DIR=.promptfoo PROMPTFOO_DISABLE_WAL_MODE=true PROMPTFOO_DISABLE_TELEMETRY=true promptfoo view",
|
|
127
126
|
"check:content-boundary": "node scripts/check-content-boundary.cjs",
|
|
128
|
-
"prepack": "npm run build --silent && npm run validate:source --"
|
|
127
|
+
"prepack": "npm run build --silent && npm run validate:source --",
|
|
128
|
+
"kit": "npm run build --silent && node build/src/cli.js kit"
|
|
129
129
|
},
|
|
130
130
|
"devDependencies": {
|
|
131
131
|
"@types/node": "^22.19.19",
|
|
132
132
|
"promptfoo": "^0.121.15",
|
|
133
133
|
"typescript": "^6.0.3"
|
|
134
|
+
},
|
|
135
|
+
"dependencies": {
|
|
136
|
+
"@kontourai/flow": "^1.2.0"
|
|
134
137
|
}
|
|
135
138
|
}
|