create-agentic-workspace 0.13.0 → 0.15.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/package.json +2 -2
- package/permission-floor.json +31 -17
- package/src/cleanup.mjs +3 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-agentic-workspace",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"description": "The pre-session bootstrap wizard for an Agentic Foundry workspace: declares (never grants) the permission floor, absorbs foundry-bootstrap.sh's out-of-session identity wiring, and scaffolds a seven-file schema-valid workspace. Zero dependencies, no lifecycle scripts, no telemetry.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"marketplace_name": "agentic-foundry",
|
|
35
35
|
"marketplace_repo": "lukasrepublic/agentic-foundry",
|
|
36
36
|
"plugin_name": "foundry",
|
|
37
|
-
"plugin_version": "1.
|
|
37
|
+
"plugin_version": "1.15.0",
|
|
38
38
|
"pins_researched": "2026-08-02"
|
|
39
39
|
}
|
|
40
40
|
}
|
package/permission-floor.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": 1,
|
|
3
3
|
"plugin_root_glob": "~/.claude/plugins/cache/*/foundry/*",
|
|
4
|
-
"generated_for_plugin_version": "1.
|
|
4
|
+
"generated_for_plugin_version": "1.15.0",
|
|
5
5
|
"entries": [
|
|
6
6
|
{
|
|
7
7
|
"rule": "Bash(~/.claude/plugins/cache/*/foundry/*/scripts/foundry-acceptance-contract-validate.py:*)",
|
|
@@ -64,29 +64,19 @@
|
|
|
64
64
|
"rationale": "bare invocation runs the thin 5-check health probe; read-only, fail-open; exact rule deliberately — flag-qualified forms fall through to a prompt so no allow-prefix can reach the --heal ceremony (security review 2026-08-02)."
|
|
65
65
|
},
|
|
66
66
|
{
|
|
67
|
-
"rule": "Bash(~/.claude/plugins/cache/*/foundry/*/scripts/foundry-
|
|
68
|
-
"tier": "allow",
|
|
69
|
-
"rationale": "status/reap over machine-scoped worker sandbox envs; confined to isolated per-worker state"
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
"rule": "Bash(~/.claude/plugins/cache/*/foundry/*/scripts/foundry-fleet-doctor.py:*)",
|
|
73
|
-
"tier": "allow",
|
|
74
|
-
"rationale": "read-only health sweep across all adopter handbooks wiring the plugin on one machine"
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
"rule": "Bash(~/.claude/plugins/cache/*/foundry/*/scripts/foundry-fleet-roster.py:*)",
|
|
67
|
+
"rule": "Bash(~/.claude/plugins/cache/*/foundry/*/scripts/foundry-done-when-backfill.py --dry-run:*)",
|
|
78
68
|
"tier": "allow",
|
|
79
|
-
"rationale": "read-only
|
|
69
|
+
"rationale": "read-only report of every acceptance-contract.yaml lacking a top-level done_when and its derivation; writes nothing (AC-SUB-3)"
|
|
80
70
|
},
|
|
81
71
|
{
|
|
82
|
-
"rule": "Bash(~/.claude/plugins/cache/*/foundry/*/scripts/foundry-
|
|
72
|
+
"rule": "Bash(~/.claude/plugins/cache/*/foundry/*/scripts/foundry-env-hygiene.py:*)",
|
|
83
73
|
"tier": "allow",
|
|
84
|
-
"rationale": "
|
|
74
|
+
"rationale": "status/reap over machine-scoped worker sandbox envs; confined to isolated per-worker state"
|
|
85
75
|
},
|
|
86
76
|
{
|
|
87
|
-
"rule": "Bash(~/.claude/plugins/cache/*/foundry/*/scripts/foundry-
|
|
77
|
+
"rule": "Bash(~/.claude/plugins/cache/*/foundry/*/scripts/foundry-governance-budget.py:*)",
|
|
88
78
|
"tier": "allow",
|
|
89
|
-
"rationale": "
|
|
79
|
+
"rationale": "read-only report of skill prose lines / shipped scripts / floor rows / hook commands / pytest count; prints only, writes nothing (AC-SUB-4)"
|
|
90
80
|
},
|
|
91
81
|
{
|
|
92
82
|
"rule": "Bash(~/.claude/plugins/cache/*/foundry/*/scripts/foundry-graph-mcp.py:*)",
|
|
@@ -98,6 +88,11 @@
|
|
|
98
88
|
"tier": "allow",
|
|
99
89
|
"rationale": "read-only machinery index derived on demand from skills/agents frontmatter"
|
|
100
90
|
},
|
|
91
|
+
{
|
|
92
|
+
"rule": "Bash(~/.claude/plugins/cache/*/foundry/*/scripts/foundry-manifest-to-tasklist.py:*)",
|
|
93
|
+
"tier": "allow",
|
|
94
|
+
"rationale": "read-only projection of a release manifest into a TaskCreate plan; prints JSON, executes nothing"
|
|
95
|
+
},
|
|
101
96
|
{
|
|
102
97
|
"rule": "Bash(~/.claude/plugins/cache/*/foundry/*/scripts/foundry-native-todo-discipline.py:*)",
|
|
103
98
|
"tier": "allow",
|
|
@@ -208,6 +203,11 @@
|
|
|
208
203
|
"tier": "allow",
|
|
209
204
|
"rationale": "read-only intake schema-defect / grounding checker over a project dir"
|
|
210
205
|
},
|
|
206
|
+
{
|
|
207
|
+
"rule": "Bash(~/.claude/plugins/cache/*/foundry/*/scripts/foundry_message_kind.py:*)",
|
|
208
|
+
"tier": "allow",
|
|
209
|
+
"rationale": "deterministic outgoing cross-session message lint (fleet-is-listagents, AC-FIL-3): reads its --in argument, checks the first line against the closed FINDING|NEEDS-INTERFACE|CHALLENGE|HANDOFF vocabulary and HANDOFF's json shape against schema/blocker.schema.json, prints a JSON verdict; writes nothing"
|
|
210
|
+
},
|
|
211
211
|
{
|
|
212
212
|
"rule": "Bash(~/.claude/plugins/cache/*/foundry/*/scripts/foundry_repo_fleet.py status:*)",
|
|
213
213
|
"tier": "allow",
|
|
@@ -228,6 +228,11 @@
|
|
|
228
228
|
"tier": "allow",
|
|
229
229
|
"rationale": "session-scoped mode/fork-policy set-and-resolve state-writer; not a release/repo ceremony"
|
|
230
230
|
},
|
|
231
|
+
{
|
|
232
|
+
"rule": "Bash(~/.claude/plugins/cache/*/foundry/*/scripts/foundry-routine-wake-prompt.py:*)",
|
|
233
|
+
"tier": "allow",
|
|
234
|
+
"rationale": "routine-wake (autonomy-continuation R3, AC-RWK-1): validates <programme>/--deck-name as [a-z0-9-]+ slugs and prints the self-contained Routine prompt plus the /schedule recipe and prerequisites; reads no corpus state and writes nothing"
|
|
235
|
+
},
|
|
231
236
|
{
|
|
232
237
|
"rule": "Bash(claude plugin tag:*)",
|
|
233
238
|
"tier": "ask",
|
|
@@ -263,6 +268,11 @@
|
|
|
263
268
|
"tier": "ask",
|
|
264
269
|
"rationale": "ceremony: leading subcommand, writes a decommission record"
|
|
265
270
|
},
|
|
271
|
+
{
|
|
272
|
+
"rule": "Bash(~/.claude/plugins/cache/*/foundry/*/scripts/foundry-done-when-backfill.py --apply:*)",
|
|
273
|
+
"tier": "ask",
|
|
274
|
+
"rationale": "writes a derived done_when: block into every acceptance-contract.yaml it backfills across the workspace's whole spec corpus; the --dry-run flag above is the read-only tier (AC-SUB-3)"
|
|
275
|
+
},
|
|
266
276
|
{
|
|
267
277
|
"rule": "Bash(~/.claude/plugins/cache/*/foundry/*/scripts/foundry-doctor.py --heal:*)",
|
|
268
278
|
"tier": "ask",
|
|
@@ -382,6 +392,10 @@
|
|
|
382
392
|
"script": "foundry_contract.py",
|
|
383
393
|
"rationale": "library: no argparse/__main__; acceptance-contract schema/hash helpers imported by other scripts"
|
|
384
394
|
},
|
|
395
|
+
{
|
|
396
|
+
"script": "foundry_floor_hooks.py",
|
|
397
|
+
"rationale": "library: no argparse/__main__; shared subject-parsing/authorization/evidence helpers imported by hooks/foundry-task-created.py and hooks/foundry-task-completed.py"
|
|
398
|
+
},
|
|
385
399
|
{
|
|
386
400
|
"script": "foundry_graph.py",
|
|
387
401
|
"rationale": "library: no argparse/__main__; citation-graph primitives imported by the graph CLIs"
|
package/src/cleanup.mjs
CHANGED
|
@@ -16,9 +16,9 @@ import {
|
|
|
16
16
|
|
|
17
17
|
/** The union of every scope record's `version` for `<plugin>@<marketplace>` in
|
|
18
18
|
* installed_plugins.json, plus the refreshed marketplace manifest's `version` — NEVER the highest
|
|
19
|
-
* semver on disk.
|
|
20
|
-
*
|
|
21
|
-
*
|
|
19
|
+
* semver on disk. Stopping after the first matching record (rather than unioning every one) would
|
|
20
|
+
* silently drop a scope pinned to an older version that is still live — this cleanup path must
|
|
21
|
+
* never prune a directory a live scope still resolves to. */
|
|
22
22
|
export function deriveLiveSet({ registry, manifestVersion, pluginKey }) {
|
|
23
23
|
if (!registry.ok) return { ok: false, reason: registry.reason };
|
|
24
24
|
const records = scopeRecordsFor(registry.doc, pluginKey);
|