aiwg 2026.8.5 → 2026.8.7

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 (72) hide show
  1. package/agentic/code/plugins/agent-loop/.claude-plugin/plugin.json +1 -1
  2. package/agentic/code/plugins/agent-persistence/.claude-plugin/plugin.json +1 -1
  3. package/agentic/code/plugins/agentic-installer/.claude-plugin/plugin.json +1 -1
  4. package/agentic/code/plugins/aiwg-dev/.claude-plugin/plugin.json +1 -1
  5. package/agentic/code/plugins/aiwg-evals/.claude-plugin/plugin.json +1 -1
  6. package/agentic/code/plugins/auto-memory/.claude-plugin/plugin.json +1 -1
  7. package/agentic/code/plugins/browser-control/.claude-plugin/plugin.json +1 -1
  8. package/agentic/code/plugins/color-palette/.claude-plugin/plugin.json +1 -1
  9. package/agentic/code/plugins/compound-memory/.claude-plugin/plugin.json +1 -1
  10. package/agentic/code/plugins/context-curator/.claude-plugin/plugin.json +1 -1
  11. package/agentic/code/plugins/daemon/.claude-plugin/plugin.json +1 -1
  12. package/agentic/code/plugins/doc-intelligence/.claude-plugin/plugin.json +1 -1
  13. package/agentic/code/plugins/droid-bridge/.claude-plugin/plugin.json +1 -1
  14. package/agentic/code/plugins/forensics/.claude-plugin/plugin.json +1 -1
  15. package/agentic/code/plugins/guided-implementation/.claude-plugin/plugin.json +1 -1
  16. package/agentic/code/plugins/hooks/.claude-plugin/plugin.json +1 -1
  17. package/agentic/code/plugins/knowledge-base/.claude-plugin/plugin.json +1 -1
  18. package/agentic/code/plugins/line-memory/.claude-plugin/plugin.json +1 -1
  19. package/agentic/code/plugins/llm-wiki/.claude-plugin/plugin.json +1 -1
  20. package/agentic/code/plugins/marketing/.claude-plugin/plugin.json +1 -1
  21. package/agentic/code/plugins/media-curator/.claude-plugin/plugin.json +1 -1
  22. package/agentic/code/plugins/nlp-prod/.claude-plugin/plugin.json +1 -1
  23. package/agentic/code/plugins/ops/.claude-plugin/plugin.json +1 -1
  24. package/agentic/code/plugins/prose-integration/.claude-plugin/plugin.json +1 -1
  25. package/agentic/code/plugins/research/.claude-plugin/plugin.json +1 -1
  26. package/agentic/code/plugins/rlm/.claude-plugin/plugin.json +1 -1
  27. package/agentic/code/plugins/sdlc/.claude-plugin/plugin.json +1 -1
  28. package/agentic/code/plugins/security-engineering/.claude-plugin/plugin.json +1 -1
  29. package/agentic/code/plugins/semantic-memory/.claude-plugin/plugin.json +1 -1
  30. package/agentic/code/plugins/skill-factory/.claude-plugin/plugin.json +1 -1
  31. package/agentic/code/plugins/star-prompt/.claude-plugin/plugin.json +1 -1
  32. package/agentic/code/plugins/testing-quality/.claude-plugin/plugin.json +1 -1
  33. package/agentic/code/plugins/twelve-factor/.claude-plugin/plugin.json +1 -1
  34. package/agentic/code/plugins/uat-mcp/.claude-plugin/plugin.json +1 -1
  35. package/agentic/code/plugins/utils/.claude-plugin/plugin.json +1 -1
  36. package/agentic/code/plugins/validation-complete/.claude-plugin/plugin.json +1 -1
  37. package/agentic/code/plugins/verbalized-sampling/.claude-plugin/plugin.json +1 -1
  38. package/agentic/code/plugins/voice/.claude-plugin/plugin.json +1 -1
  39. package/agentic/code/plugins/writing/.claude-plugin/plugin.json +1 -1
  40. package/dist/src/artifacts/move.js +15 -5
  41. package/dist/src/cli/handlers/artifacts.js +8 -3
  42. package/dist/src/mcp/cli.mjs +5 -2
  43. package/dist/src/mcp/server.mjs +1 -1
  44. package/dist/src/mcp/tools/agentic-sandbox.mjs +232 -0
  45. package/dist/src/mcp/tools/subsystems.mjs +2 -0
  46. package/docs/agents/cli-reference.md +4 -0
  47. package/docs/cockpit/qualifications/agentic-sandbox-v2026.8.3.md +62 -0
  48. package/docs/cockpit/recovery.md +8 -0
  49. package/docs/contracts/agentic-sandbox-activity-v1.md +32 -0
  50. package/docs/development/aiwg-development-guide.md +5 -3
  51. package/docs/development/private-aiwg-corpus.md +13 -10
  52. package/docs/integrations/mcp-capability-audit.md +5 -3
  53. package/docs/mcp/README.md +10 -1
  54. package/docs/releases/_manifest.json +3 -0
  55. package/docs/releases/v2026.8.5-announcement.md +8 -0
  56. package/docs/releases/v2026.8.6-announcement.md +66 -0
  57. package/docs/releases/v2026.8.7-announcement.md +62 -0
  58. package/docs/serve-guide.md +4 -1
  59. package/package.json +4 -1
  60. package/prebuilt/fortemi-core/framework/aiwg-fortemi-index-v2.json +1 -1
  61. package/prebuilt/fortemi-core/framework/manifest.json +2 -2
  62. package/schemas/activity/activity-event-v1.schema.json +70 -0
  63. package/schemas/activity/activity-operational-evidence-v1.schema.json +88 -0
  64. package/schemas/activity/upstream-contract.json +15 -0
  65. package/test/conformance/activity-v1/fixtures/invalid-operational-evidence.json +11 -0
  66. package/test/conformance/activity-v1/fixtures/invalid-restricted-event.json +14 -0
  67. package/test/conformance/activity-v1/fixtures/invalid-schema-event.json +14 -0
  68. package/test/conformance/activity-v1/fixtures/valid-event.json +15 -0
  69. package/test/conformance/activity-v1/fixtures/valid-operational-evidence.json +17 -0
  70. package/tools/cli/workspace-status.mjs +9 -6
  71. package/tools/qualification/agentic-sandbox-baseline.mjs +63 -0
  72. package/tools/scripts/resource-preflight.mjs +2 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-loop",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Iterative AI coding loops with automatic recovery - iteration beats perfection",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-persistence",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Human-in-the-loop (HITL) gate definitions for agent operations. Provides reusable YAML gates for destructive-action authorization, false-positive override, and recovery escalation. Loaded by agent loops and orchestrators that need bounded human checkpoints.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-installer",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Structured YAML manifests for reproducible, agent-driven software installation across platforms. Scripts are the primary artifact; agentic instructions handle adaptation and recovery.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aiwg-dev",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Developer tooling for building AIWG itself and AIWG addons/frameworks. Not for end users — install explicitly with `aiwg use aiwg-dev`.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aiwg-evals",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Automated evaluation framework for agent quality, based on KAMI benchmark methodology and ReAct patterns",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "auto-memory",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Automatic memory seed templates for AIWG projects",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "browser-control",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Drive a real, user-installed Chromium-derived browser from an AIWG agent. Wraps @playwright/mcp with a setup wizard, health-check doctor, allow-list enforcement, and an opinionated agent persona that respects authorization and audit boundaries.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "color-palette",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Color palette selection and review tooling with color theory fundamentals, current trend research, and accessibility analysis.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "compound-memory",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Governed orchestration across AIWG line memory, semantic memory, and llm-wiki.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "context-curator",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Context curation and distractor filtering for production-grade agent reliability",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "daemon",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Persistent daemon session capabilities: Concierge front-end, session memory, scheduler integration",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "doc-intelligence",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Documentation intelligence addon for scraping, extraction, and analysis. Coordinates doc-scraper, pdf-extractor, llms-txt-support, source-unifier, and doc-splitter skills.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "droid-bridge",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "MCP server bridging Claude Code to Factory Droid for batch operations and automated fixes",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "forensics",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Digital forensics and incident response framework with 14 specialized agents covering target profiling, evidence acquisition, log/memory/container/cloud analysis, IOC extraction, and reporting.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "guided-implementation",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Bounded iteration control for autonomous issue-to-code implementation",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hooks",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Claude Code hooks for workflow tracing and observability.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "knowledge-base",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Knowledge-base / wiki framework with skills for ingestion, query, and lint. Build a structured, citable corpus with cross-references and concept pages.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "line-memory",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Bounded, plain-text project memory with least-recently-used retention.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "llm-wiki",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "LLM-maintained markdown wiki that compounds as sources are ingested. Thin topology declaration on the semantic memory kernel — ships schema profiles and page templates, no custom mechanics.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "marketing",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Marketing automation framework with 37 specialized agents for campaign management.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "media-curator",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Media archive management framework with 7 specialized agents for source discovery, acquisition (yt-dlp / Internet Archive / Bandcamp), quality assessment, metadata tagging, and provenance tracking.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nlp-prod",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Tools, skills, and CLI extensions for designing and productionizing LLM inference pipelines. Pattern-guided, slim by default, eval-first.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ops",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Operational infrastructure framework with 12 specialized agents covering incident response, runbook execution, fleet inventory, certificate lifecycle, and disaster recovery planning.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prose-integration",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Tools for reading, parsing, validating, and executing OpenProse programs from AIWG workflows",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "research",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Research workflow framework with 9 specialized agents for discovery, acquisition, synthesis, citation management, GRADE quality assessment, and OAIS-compliant archival.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rlm",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "RLM-inspired recursive context decomposition for processing arbitrarily large codebases and document corpora through programmatic sub-agent delegation",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sdlc",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Complete SDLC framework with 180+ specialized agents for software development lifecycle management.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "security-engineering",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Applied security framework for cryptographic primitive selection, chain-of-trust design, authentication factor analysis, supply-chain trust, and physical-threat modeling. Complements OWASP-style application audits.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "semantic-memory",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Topology-agnostic semantic memory operations: ingest, lint, query-capture, and structured event logging. Consumers declare a memory topology in their manifest.json; kernel skills read that contract to parameterize behavior.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skill-factory",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Build, enhance, validate, and package Claude skills end-to-end. Coordinates skill-builder, skill-enhancer, quality-checker, and skill-packager via the skill-architect agent.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "star-prompt",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Tasteful prompt to encourage users to star the repository after successful command completion",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "testing-quality",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Testing enforcement, quality metrics, and automation skills",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "twelve-factor",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Design-time and audit-time workflows for Twelve-Factor and modern 12+ Factor cloud-native application practices.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uat-mcp",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Agent-executable acceptance testing via MCP connections — generate, execute, and report on UAT plans that validate MCP tool surfaces.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "utils",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Core AIWG utilities for context regeneration and workspace management.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "validation-complete",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Validation Complete for AIWG",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "verbalized-sampling",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Training-free prompting technique that improves output diversity by 1.6-2.1x through verbalized probability distributions, addressing RLHF mode collapse",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "voice",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Voice profile system for consistent, authentic writing.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "writing",
3
- "version": "2026.8.5",
3
+ "version": "2026.8.7",
4
4
  "description": "Writing quality validation and AI pattern detection.",
5
5
  "author": {
6
6
  "name": "AIWG Contributors",
@@ -108,21 +108,30 @@ export async function moveProjectArtifacts(options) {
108
108
  const source = path.resolve(options.from ? expandProjectArtifactPath(options.from, projectDir) : resolveProjectAiwgDir(projectDir));
109
109
  const destination = path.resolve(expandProjectArtifactPath(options.to, projectDir));
110
110
  const dryRun = options.dryRun === true;
111
+ const attach = options.attach === true;
111
112
  const reindex = options.reindex !== false;
112
113
  const syncFortemi = options.syncFortemi !== false;
113
- if (samePath(source, destination)) {
114
+ if (!attach && samePath(source, destination)) {
114
115
  throw new Error(`Source and destination are the same directory: ${source}`);
115
116
  }
116
- if (!existsSync(source)) {
117
+ if (!attach && !existsSync(source)) {
117
118
  throw new Error(`Source AIWG artifact directory does not exist: ${source}`);
118
119
  }
119
- if (existsSync(destination) && !(await isEmptyDirectory(destination))) {
120
+ if (attach) {
121
+ if (!existsSync(destination) || !(await stat(destination)).isDirectory()) {
122
+ throw new Error(`Artifact root to attach does not exist or is not a directory: ${destination}`);
123
+ }
124
+ if (!existsSync(path.join(destination, 'aiwg.config'))) {
125
+ throw new Error(`Artifact root to attach has no aiwg.config: ${destination}`);
126
+ }
127
+ }
128
+ else if (existsSync(destination) && !(await isEmptyDirectory(destination))) {
120
129
  throw new Error(`Destination already exists and is not empty: ${destination}`);
121
130
  }
122
131
  const pointerValue = pointerValueFor(projectDir, destination);
123
132
  const pointerPath = path.join(projectDir, PROJECT_AIWG_LOCATION_FILE);
124
133
  const gitignoreUpdated = await ensureGitignorePointer(projectDir, dryRun);
125
- if (!dryRun) {
134
+ if (!dryRun && !attach) {
126
135
  await moveDirectory(source, destination);
127
136
  }
128
137
  await writePointer(projectDir, pointerValue, dryRun);
@@ -144,7 +153,8 @@ export async function moveProjectArtifacts(options) {
144
153
  to: destination,
145
154
  pointerPath,
146
155
  pointerValue,
147
- moved: !dryRun,
156
+ moved: !dryRun && !attach,
157
+ attached: attach && !dryRun,
148
158
  gitignoreUpdated,
149
159
  reindexed,
150
160
  fortemiSynced,
@@ -5,9 +5,11 @@ function usage() {
5
5
  'aiwg artifacts — Manage the project AIWG artifact root',
6
6
  '',
7
7
  'Usage:',
8
- ' aiwg artifacts move --to <path> [--from <path>] [--dry-run] [--force] [--no-reindex] [--no-sync]',
8
+ ' aiwg artifacts move --to <path> [--from <path>] [--dry-run] [--no-reindex] [--no-sync]',
9
+ ' aiwg artifacts attach --to <existing-path> [--dry-run] [--no-reindex] [--no-sync]',
9
10
  '',
10
11
  'Notes:',
12
+ ' move relocates a local artifact root; attach adopts an existing populated root.',
11
13
  ' --to points at the artifact directory itself, not its parent.',
12
14
  ' AIWG_ARTIFACTS_PATH overrides the generated .aiwg-location pointer.',
13
15
  ].join('\n');
@@ -30,7 +32,7 @@ export const artifactsHandler = {
30
32
  if (action === 'help' || ctx.args.includes('--help') || ctx.args.includes('-h')) {
31
33
  return { exitCode: 0, message: usage() };
32
34
  }
33
- if (action !== 'move') {
35
+ if (action !== 'move' && action !== 'attach') {
34
36
  return { exitCode: 1, message: `Unknown artifacts action: ${action}\n\n${usage()}` };
35
37
  }
36
38
  const to = valueAfter(ctx.args, '--to');
@@ -42,12 +44,15 @@ export const artifactsHandler = {
42
44
  projectDir: getProjectDir(ctx, ctx.args),
43
45
  from: valueAfter(ctx.args, '--from'),
44
46
  to,
47
+ attach: action === 'attach',
45
48
  dryRun: ctx.dryRun || ctx.args.includes('--dry-run'),
46
49
  force: ctx.args.includes('--force'),
47
50
  reindex: !ctx.args.includes('--no-reindex'),
48
51
  syncFortemi: !ctx.args.includes('--no-sync'),
49
52
  });
50
- const verb = result.dryRun ? 'Would move' : 'Moved';
53
+ const verb = result.dryRun
54
+ ? (action === 'attach' ? 'Would attach' : 'Would move')
55
+ : (result.attached ? 'Attached' : 'Moved');
51
56
  return {
52
57
  exitCode: 0,
53
58
  message: [
@@ -415,7 +415,7 @@ CORE TOOLS (15, always registered):
415
415
  command-run Allow-listed CLI dispatch; confirmation-gated when needed
416
416
  artifact-read / artifact-write Project .aiwg/ artifact IO
417
417
 
418
- OPT-IN TOOLSETS (51 additional tools):
418
+ OPT-IN TOOLSETS (60 additional tools):
419
419
  flows flow-list / flow-show / flow-run
420
420
  missions mission-guide / mission-dispatch / mission-status
421
421
  memory memory-* and reflections-* storage operations
@@ -426,9 +426,10 @@ OPT-IN TOOLSETS (51 additional tools):
426
426
  ralph start / status / abort / attach
427
427
  mc start / dispatch / status / stop / list
428
428
  ops status / list / use / push
429
+ sandbox fleet inventory / mutation / reconciliation and governed activity
429
430
 
430
431
  Enable opt-in tools:
431
- AIWG_MCP_TOOLSETS=flows,missions,memory,kb,ralph aiwg mcp serve
432
+ AIWG_MCP_TOOLSETS=flows,missions,memory,kb,ralph,sandbox aiwg mcp serve
432
433
  aiwg mcp serve --toolsets=all
433
434
 
434
435
  RESOURCES:
@@ -451,6 +452,8 @@ TRANSPORTS:
451
452
  ENVIRONMENT:
452
453
  AIWG_ROOT Path to AIWG installation (default: ~/.local/share/ai-writing-guide)
453
454
  AIWG_MCP_TOOLSETS Comma-separated opt-in toolsets; use all for every toolset
455
+ AIWG_SANDBOX_MANAGEMENT_URL Sandbox management API origin (HTTPS except loopback)
456
+ AIWG_SANDBOX_MANAGEMENT_TOKEN_FILE Mode-0600 management bearer file for sandbox tools
454
457
 
455
458
  Docs:
456
459
  docs/integrations/mcp-capability-audit.md
@@ -68,7 +68,7 @@ export function createServer() {
68
68
  // Opt-in subsystem toolsets (#1322-#1332)
69
69
  //
70
70
  // Enabled via AIWG_MCP_TOOLSETS env or `aiwg mcp serve --toolsets=`.
71
- // Known: flows, missions, memory, kb, research, activity-log, index, ralph, mc, ops, all
71
+ // Known: flows, missions, memory, kb, research, activity-log, index, ralph, mc, ops, sandbox, all
72
72
  // Default: none (core only — discovery + command-run)
73
73
  // ============================================
74
74
  const requested = parseToolsets(process.env.AIWG_MCP_TOOLSETS || '');