@piagent/platform 1.0.1 → 1.1.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.
@@ -146,8 +146,10 @@ required_files=(
146
146
  "$ROOT/scripts/audit-runtime-host.sh"
147
147
  "$ROOT/scripts/verify-release-identity.mjs"
148
148
  "$ROOT/scripts/verify-vercel-link.mjs"
149
+ "$ROOT/scripts/check-published-site.mjs"
149
150
  "$ROOT/scripts/piagent-cli.mjs"
150
151
  "$ROOT/scripts/init-project.sh"
152
+ "$ROOT/scripts/uninstall-global.sh"
151
153
  "$ROOT/scripts/setup.sh"
152
154
  "$ROOT/scripts/team-doctor.sh"
153
155
  "$ROOT/scripts/link-project.sh"
@@ -175,10 +177,13 @@ required_files=(
175
177
  "$ROOT/tests/capability-sources.test.mjs"
176
178
  "$ROOT/packages/piagent-core/capabilities/capability-sources.js"
177
179
  "$ROOT/packages/piagent-core/extensions/guard-shell-analysis.ts"
180
+ "$ROOT/packages/piagent-core/extensions/document-intake.ts"
178
181
  "$ROOT/tests/guard-shell-analysis.test.mjs"
182
+ "$ROOT/tests/document-intake.test.mjs"
179
183
  "$ROOT/tests/runtime-advisories.test.mjs"
180
184
  "$ROOT/scripts/check-runtime-advisories.mjs"
181
185
  "$ROOT/tests/migrate-project-state.test.mjs"
186
+ "$ROOT/tests/uninstall-global.test.mjs"
182
187
  "$ROOT/tests/import-agent-instructions.test.mjs"
183
188
  "$ROOT/evals/golden/enforcement-decisions.json"
184
189
  )
@@ -248,8 +253,8 @@ if (!rootPkg.pi.subagents?.agents?.length) {
248
253
  throw new Error("root package.json missing pi.subagents.agents");
249
254
  }
250
255
  const expectedPeers = {
251
- "@earendil-works/pi-ai": "0.81.1",
252
- "@earendil-works/pi-coding-agent": "0.81.1",
256
+ "@earendil-works/pi-ai": "0.82.0",
257
+ "@earendil-works/pi-coding-agent": "0.82.0",
253
258
  typebox: "1.1.38"
254
259
  };
255
260
  for (const [name, version] of Object.entries(expectedPeers)) {
@@ -266,21 +271,61 @@ if (!pkg.pi.subagents?.agents?.length) {
266
271
  }
267
272
  NODE
268
273
 
269
- grep -R "auth.json" "$ROOT/docs" "$ROOT/packages/piagent-core" "$ROOT/templates" >/dev/null
270
- grep -R "piagent_context" "$ROOT/packages/piagent-core" >/dev/null
271
- grep -R "piagent_permission_status" "$ROOT/packages/piagent-core" "$ROOT/docs" "$ROOT/README.md" >/dev/null
272
- grep -R "/full-access" "$ROOT/docs" "$ROOT/README.md" "$ROOT/packages/piagent-core/README.md" >/dev/null
273
- grep -R "piagent_exec_policy_check" "$ROOT/packages/piagent-core" "$ROOT/docs" "$ROOT/templates/project/AGENTS.md" >/dev/null
274
- grep -R "piagent_context_budget" "$ROOT/packages/piagent-core" "$ROOT/docs" "$ROOT/templates/project/AGENTS.md" >/dev/null
275
- grep -R "piagent_tool_policy_check" "$ROOT/packages/piagent-core" "$ROOT/docs" "$ROOT/templates/project/AGENTS.md" >/dev/null
276
- grep -R "piagent_task_gate_check" "$ROOT/packages/piagent-core" "$ROOT/docs" "$ROOT/templates/project/AGENTS.md" >/dev/null
277
- grep -R "piagent_usage_snapshot" "$ROOT/packages/piagent-core" "$ROOT/docs" "$ROOT/templates/project/AGENTS.md" >/dev/null
278
- grep -R "/piagent-usage" "$ROOT/packages/piagent-core" "$ROOT/docs" "$ROOT/README.md" >/dev/null
279
- grep -R "/piagent-commands" "$ROOT/README.md" "$ROOT/docs" "$ROOT/packages/piagent-core/prompts" >/dev/null
280
- grep -R "auto-delegation" "$ROOT/README.md" "$ROOT/docs" "$ROOT/packages/piagent-core/prompts" "$ROOT/templates/project/AGENTS.md" >/dev/null
281
- grep -R "Subagents used/not used" "$ROOT/packages/piagent-core/prompts" "$ROOT/docs/auto-delegation-policy.md" >/dev/null
282
- grep -R "Subagent orchestration capabilities" "$ROOT/README.md" "$ROOT/docs/subagent-orchestration-capabilities.md" >/dev/null
283
- grep -R "pi-web-access" "$ROOT/README.md" "$ROOT/docs" "$ROOT/scripts/install-global.sh" "$ROOT/scripts/setup.sh" >/dev/null
274
+ # Documentation-coverage gates: a name that ships has to be findable in the docs
275
+ # that teach it. Each of these was a bare `grep >/dev/null` under `set -e`, which
276
+ # fails with exit 1 and no output, so a doc edit that dropped a term produced an
277
+ # unexplained failure and a bisect. Naming the term and the files searched turns
278
+ # that into a one-line fix.
279
+ # Repository-relative paths, so the message reads the same on every machine.
280
+ # Word-by-word because prefix removal on "$*" only strips the first word.
281
+ relative_paths() {
282
+ local out=""
283
+ for path in "$@"; do
284
+ out+="${path#"$ROOT/"} "
285
+ done
286
+ printf '%s' "${out% }"
287
+ }
288
+
289
+ require_documented() {
290
+ local term="$1"
291
+ shift
292
+ if ! grep -R "$term" "$@" >/dev/null; then
293
+ echo "documentation gate: \"$term\" is no longer mentioned in $(relative_paths "$@"); restore it or update this gate in the same change" >&2
294
+ exit 1
295
+ fi
296
+ }
297
+
298
+ # Long-running repo commands stay quiet on success so the gate output stays
299
+ # readable, but discarding their output on failure leaves this script exiting 1
300
+ # with nothing to read. Capture, then replay only when the command fails.
301
+ run_quietly() {
302
+ local label="$1"
303
+ shift
304
+ local output
305
+ if ! output="$(cd "$ROOT" && "$@" 2>&1)"; then
306
+ printf '%s\n' "$output" >&2
307
+ echo "$label failed; the output above is why" >&2
308
+ exit 1
309
+ fi
310
+ }
311
+
312
+ require_documented "auth.json" "$ROOT/docs" "$ROOT/packages/piagent-core" "$ROOT/templates"
313
+ require_documented "piagent_context" "$ROOT/packages/piagent-core"
314
+ require_documented "piagent_permission_status" "$ROOT/packages/piagent-core" "$ROOT/docs" "$ROOT/README.md"
315
+ require_documented "/full-access" "$ROOT/docs" "$ROOT/README.md" "$ROOT/packages/piagent-core/README.md"
316
+ require_documented "piagent_exec_policy_check" "$ROOT/packages/piagent-core" "$ROOT/docs" "$ROOT/templates/project/AGENTS.md"
317
+ require_documented "piagent_context_budget" "$ROOT/packages/piagent-core" "$ROOT/docs" "$ROOT/templates/project/AGENTS.md"
318
+ require_documented "piagent_tool_policy_check" "$ROOT/packages/piagent-core" "$ROOT/docs" "$ROOT/templates/project/AGENTS.md"
319
+ require_documented "piagent_task_gate_check" "$ROOT/packages/piagent-core" "$ROOT/docs" "$ROOT/templates/project/AGENTS.md"
320
+ require_documented "piagent_usage_snapshot" "$ROOT/packages/piagent-core" "$ROOT/docs" "$ROOT/templates/project/AGENTS.md"
321
+ require_documented "/piagent-usage" "$ROOT/packages/piagent-core" "$ROOT/docs" "$ROOT/README.md"
322
+ require_documented "piagent_document_read" "$ROOT/packages/piagent-core" "$ROOT/docs"
323
+ require_documented "additionalReadRoots" "$ROOT/docs" "$ROOT/schemas/project-profile.schema.json"
324
+ require_documented "/piagent-commands" "$ROOT/README.md" "$ROOT/docs" "$ROOT/packages/piagent-core/prompts"
325
+ require_documented "auto-delegation" "$ROOT/README.md" "$ROOT/docs" "$ROOT/packages/piagent-core/prompts" "$ROOT/templates/project/AGENTS.md"
326
+ require_documented "Subagents used/not used" "$ROOT/packages/piagent-core/prompts" "$ROOT/docs/auto-delegation-policy.md"
327
+ require_documented "Subagent orchestration capabilities" "$ROOT/README.md" "$ROOT/docs/subagent-orchestration-capabilities.md"
328
+ require_documented "pi-web-access" "$ROOT/README.md" "$ROOT/docs" "$ROOT/scripts/install-global.sh" "$ROOT/scripts/setup.sh"
284
329
  grep -F 'PI_MCP_ADAPTER_SOURCE="npm:pi-mcp-adapter@2.11.0"' "$ROOT/scripts/install-global.sh" >/dev/null
285
330
  grep -F 'PI_SUBAGENTS_SOURCE="npm:pi-subagents@0.35.1"' "$ROOT/scripts/install-global.sh" >/dev/null
286
331
  grep -F 'PI_WEB_ACCESS_SOURCE="npm:pi-web-access@0.13.0"' "$ROOT/scripts/install-global.sh" >/dev/null
@@ -305,10 +350,22 @@ for (const [sourceName, versionName, packageName] of pins) {
305
350
  }
306
351
  }
307
352
  NODE
308
- grep -F 'actions/checkout@11d5960a326750d5838078e36cf38b85af677262' "$ROOT/.github/workflows/verify.yml" "$ROOT/.github/workflows/codeql.yml" >/dev/null
309
- grep -F 'actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020' "$ROOT/.github/workflows/verify.yml" >/dev/null
310
- grep -F 'github/codeql-action/init@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81' "$ROOT/.github/workflows/codeql.yml" >/dev/null
311
- grep -F 'github/codeql-action/analyze@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81' "$ROOT/.github/workflows/codeql.yml" >/dev/null
353
+ # Each reviewed action revision is asserted by hand so that a swapped action is
354
+ # a verification failure rather than a silent change. A dependency bot updating
355
+ # an action therefore needs the pin here updated in the same change; without a
356
+ # message naming the pin, that failure reads as an unexplained exit.
357
+ require_action_pin() {
358
+ local pin="$1"
359
+ shift
360
+ if ! grep -F "$pin" "$@" >/dev/null; then
361
+ echo "reviewed GitHub Actions pin $pin is missing from $(relative_paths "$@"); update this pin in the same change that bumps the action" >&2
362
+ exit 1
363
+ fi
364
+ }
365
+ require_action_pin 'actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1' "$ROOT/.github/workflows/verify.yml" "$ROOT/.github/workflows/codeql.yml"
366
+ require_action_pin 'actions/setup-node@820762786026740c76f36085b0efc47a31fe5020' "$ROOT/.github/workflows/verify.yml"
367
+ require_action_pin 'github/codeql-action/init@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81' "$ROOT/.github/workflows/codeql.yml"
368
+ require_action_pin 'github/codeql-action/analyze@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81' "$ROOT/.github/workflows/codeql.yml"
312
369
  grep -F 'git cat-file -t "refs/tags/$RELEASE_TAG"' "$ROOT/.github/workflows/verify.yml" >/dev/null
313
370
  if grep -R -E '^[[:space:]]*uses:[[:space:]]+[^@[:space:]]+@(main|master|v[0-9]+([.][0-9]+)*)[[:space:]]*(#.*)?$' "$ROOT/.github/workflows" >/dev/null; then
314
371
  echo "GitHub Actions workflow contains a mutable action reference" >&2
@@ -329,47 +386,47 @@ grep -F 'validate-source --package-source "$PACKAGE_SOURCE"' "$ROOT/scripts/inst
329
386
  grep -F 'verify_npm_integrity "$PI_MCP_ADAPTER_SOURCE" "$PI_MCP_ADAPTER_INTEGRITY"' "$ROOT/scripts/install-global.sh" >/dev/null
330
387
  grep -F 'verify_npm_integrity "$PI_SUBAGENTS_SOURCE" "$PI_SUBAGENTS_INTEGRITY"' "$ROOT/scripts/install-global.sh" >/dev/null
331
388
  grep -F 'verify_npm_integrity "$PI_WEB_ACCESS_SOURCE" "$PI_WEB_ACCESS_INTEGRITY"' "$ROOT/scripts/install-global.sh" >/dev/null
332
- grep -R "parallel-review" "$ROOT/docs" "$ROOT/README.md" >/dev/null
333
- grep -R "intercomBridge" "$ROOT/scripts/configure-subagents.sh" "$ROOT/docs/subagents-and-multiagent.md" >/dev/null
334
- grep -R "waitTool" "$ROOT/scripts/configure-subagents.sh" "$ROOT/docs/subagents-and-multiagent.md" >/dev/null
335
- grep -R "piagent_profile_options" "$ROOT/packages/piagent-core" "$ROOT/docs" >/dev/null
336
- grep -R "piagent_profile_apply" "$ROOT/packages/piagent-core" "$ROOT/docs" >/dev/null
337
- grep -R "/profile auto" "$ROOT/README.md" "$ROOT/docs" "$ROOT/packages/piagent-core" >/dev/null
338
- grep -R "piagent_profile_tech_context_record" "$ROOT/packages/piagent-core" "$ROOT/docs" "$ROOT/README.md" >/dev/null
339
- grep -R "/profile tech" "$ROOT/README.md" "$ROOT/docs" "$ROOT/packages/piagent-core/prompts" >/dev/null
340
- grep -R "/commit" "$ROOT/README.md" "$ROOT/docs" "$ROOT/packages/piagent-core/prompts" >/dev/null
341
- grep -R "/pr" "$ROOT/README.md" "$ROOT/docs" "$ROOT/packages/piagent-core/prompts" >/dev/null
342
- grep -R "piagent_project_onboarding_record" "$ROOT/packages/piagent-core" "$ROOT/docs" >/dev/null
343
- grep -R "piagent_memory_status" "$ROOT/packages/piagent-core" "$ROOT/docs" "$ROOT/templates/project/AGENTS.md" >/dev/null
344
- grep -R "piagent_memory_note" "$ROOT/packages/piagent-core" "$ROOT/docs" >/dev/null
345
- grep -R "piagent_memory_search" "$ROOT/packages/piagent-core" "$ROOT/docs" >/dev/null
346
- grep -R "piagent_memory_citation_record" "$ROOT/packages/piagent-core" "$ROOT/docs" >/dev/null
347
- grep -R "piagent_context_index_status" "$ROOT/packages/piagent-core" "$ROOT/docs" >/dev/null
348
- grep -R "piagent_context_index_record" "$ROOT/packages/piagent-core" "$ROOT/docs" >/dev/null
349
- grep -R "piagent_context_index_search" "$ROOT/packages/piagent-core" "$ROOT/docs" >/dev/null
350
- grep -R "/context-index" "$ROOT/README.md" "$ROOT/docs" "$ROOT/packages/piagent-core/prompts" >/dev/null
351
- grep -R "/onboard-project" "$ROOT/README.md" "$ROOT/docs" "$ROOT/templates/project/AGENTS.md" >/dev/null
352
- grep -R "/memory-policy" "$ROOT/README.md" "$ROOT/docs" "$ROOT/packages/piagent-core/prompts" >/dev/null
353
- grep -R "/model-options" "$ROOT/README.md" "$ROOT/docs" "$ROOT/packages/piagent-core/prompts" >/dev/null
354
- grep -R "anthropic/claude" "$ROOT/README.md" "$ROOT/docs/model-options.md" "$ROOT/packages/piagent-core/prompts/model-options.md" >/dev/null
355
- grep -R "gpt-5.6" "$ROOT/README.md" "$ROOT/docs/model-options.md" "$ROOT/packages/piagent-core/prompts/model-options.md" >/dev/null
356
- grep -R "claude-fable-5" "$ROOT/README.md" "$ROOT/docs/model-options.md" "$ROOT/packages/piagent-core/prompts/model-options.md" >/dev/null
357
- grep -R "piagent-models" "$ROOT/README.md" "$ROOT/docs/model-options.md" >/dev/null
358
- grep -R "enabledModels" "$ROOT/templates/global/settings.json" "$ROOT/docs/model-options.md" "$ROOT/scripts/configure-model-scope.sh" >/dev/null
359
- grep -R "piagent-mcp" "$ROOT/README.md" "$ROOT/docs/mcp-and-tools.md" "$ROOT/scripts/configure-mcp.sh" >/dev/null
360
- grep -R "pi-mcp-adapter" "$ROOT/README.md" "$ROOT/docs/mcp-and-tools.md" "$ROOT/scripts/install-global.sh" >/dev/null
361
- grep -R "piagent-subagents" "$ROOT/README.md" "$ROOT/docs/subagents-and-multiagent.md" "$ROOT/scripts/configure-subagents.sh" >/dev/null
362
- grep -R "subagents-fleet" "$ROOT/docs/command-reference-vietnamese.md" "$ROOT/docs/subagents-and-multiagent.md" "$ROOT/README.md" >/dev/null
363
- grep -R "health check" "$ROOT/docs/command-reference-vietnamese.md" "$ROOT/docs/subagents-and-multiagent.md" "$ROOT/README.md" >/dev/null
364
- grep -R "pi-subagents" "$ROOT/README.md" "$ROOT/docs/subagents-and-multiagent.md" "$ROOT/scripts/install-global.sh" "$ROOT/scripts/setup.sh" >/dev/null
365
- grep -R "piagent-scout" "$ROOT/README.md" "$ROOT/docs/subagents-and-multiagent.md" "$ROOT/packages/piagent-core/subagents" >/dev/null
389
+ require_documented "parallel-review" "$ROOT/docs" "$ROOT/README.md"
390
+ require_documented "intercomBridge" "$ROOT/scripts/configure-subagents.sh" "$ROOT/docs/subagents-and-multiagent.md"
391
+ require_documented "waitTool" "$ROOT/scripts/configure-subagents.sh" "$ROOT/docs/subagents-and-multiagent.md"
392
+ require_documented "piagent_profile_options" "$ROOT/packages/piagent-core" "$ROOT/docs"
393
+ require_documented "piagent_profile_apply" "$ROOT/packages/piagent-core" "$ROOT/docs"
394
+ require_documented "/profile auto" "$ROOT/README.md" "$ROOT/docs" "$ROOT/packages/piagent-core"
395
+ require_documented "piagent_profile_tech_context_record" "$ROOT/packages/piagent-core" "$ROOT/docs" "$ROOT/README.md"
396
+ require_documented "/profile tech" "$ROOT/README.md" "$ROOT/docs" "$ROOT/packages/piagent-core/prompts"
397
+ require_documented "/commit" "$ROOT/README.md" "$ROOT/docs" "$ROOT/packages/piagent-core/prompts"
398
+ require_documented "/pr" "$ROOT/README.md" "$ROOT/docs" "$ROOT/packages/piagent-core/prompts"
399
+ require_documented "piagent_project_onboarding_record" "$ROOT/packages/piagent-core" "$ROOT/docs"
400
+ require_documented "piagent_memory_status" "$ROOT/packages/piagent-core" "$ROOT/docs" "$ROOT/templates/project/AGENTS.md"
401
+ require_documented "piagent_memory_note" "$ROOT/packages/piagent-core" "$ROOT/docs"
402
+ require_documented "piagent_memory_search" "$ROOT/packages/piagent-core" "$ROOT/docs"
403
+ require_documented "piagent_memory_citation_record" "$ROOT/packages/piagent-core" "$ROOT/docs"
404
+ require_documented "piagent_context_index_status" "$ROOT/packages/piagent-core" "$ROOT/docs"
405
+ require_documented "piagent_context_index_record" "$ROOT/packages/piagent-core" "$ROOT/docs"
406
+ require_documented "piagent_context_index_search" "$ROOT/packages/piagent-core" "$ROOT/docs"
407
+ require_documented "/context-index" "$ROOT/README.md" "$ROOT/docs" "$ROOT/packages/piagent-core/prompts"
408
+ require_documented "/onboard-project" "$ROOT/README.md" "$ROOT/docs" "$ROOT/templates/project/AGENTS.md"
409
+ require_documented "/memory-policy" "$ROOT/README.md" "$ROOT/docs" "$ROOT/packages/piagent-core/prompts"
410
+ require_documented "/model-options" "$ROOT/README.md" "$ROOT/docs" "$ROOT/packages/piagent-core/prompts"
411
+ require_documented "anthropic/claude" "$ROOT/README.md" "$ROOT/docs/model-options.md" "$ROOT/packages/piagent-core/prompts/model-options.md"
412
+ require_documented "gpt-5.6" "$ROOT/README.md" "$ROOT/docs/model-options.md" "$ROOT/packages/piagent-core/prompts/model-options.md"
413
+ require_documented "claude-fable-5" "$ROOT/README.md" "$ROOT/docs/model-options.md" "$ROOT/packages/piagent-core/prompts/model-options.md"
414
+ require_documented "piagent-models" "$ROOT/README.md" "$ROOT/docs/model-options.md"
415
+ require_documented "enabledModels" "$ROOT/templates/global/settings.json" "$ROOT/docs/model-options.md" "$ROOT/scripts/configure-model-scope.sh"
416
+ require_documented "piagent-mcp" "$ROOT/README.md" "$ROOT/docs/mcp-and-tools.md" "$ROOT/scripts/configure-mcp.sh"
417
+ require_documented "pi-mcp-adapter" "$ROOT/README.md" "$ROOT/docs/mcp-and-tools.md" "$ROOT/scripts/install-global.sh"
418
+ require_documented "piagent-subagents" "$ROOT/README.md" "$ROOT/docs/subagents-and-multiagent.md" "$ROOT/scripts/configure-subagents.sh"
419
+ require_documented "subagents-fleet" "$ROOT/docs/command-reference-vietnamese.md" "$ROOT/docs/subagents-and-multiagent.md" "$ROOT/README.md"
420
+ require_documented "health check" "$ROOT/docs/command-reference-vietnamese.md" "$ROOT/docs/subagents-and-multiagent.md" "$ROOT/README.md"
421
+ require_documented "pi-subagents" "$ROOT/README.md" "$ROOT/docs/subagents-and-multiagent.md" "$ROOT/scripts/install-global.sh" "$ROOT/scripts/setup.sh"
422
+ require_documented "piagent-scout" "$ROOT/README.md" "$ROOT/docs/subagents-and-multiagent.md" "$ROOT/packages/piagent-core/subagents"
366
423
  grep -F "@upstash/context7-mcp@3.2.4" "$ROOT/scripts/configure-mcp.sh" >/dev/null
367
424
  grep -F "@upstash/context7-mcp@3.2.4" "$ROOT/docs/mcp-and-tools.md" >/dev/null
368
425
  grep -F "chrome-devtools-mcp@1.6.0" "$ROOT/scripts/configure-mcp.sh" >/dev/null
369
426
  grep -F "chrome-devtools-mcp@1.6.0" "$ROOT/docs/mcp-and-tools.md" >/dev/null
370
427
  grep -F "@playwright/mcp@0.0.78" "$ROOT/scripts/configure-mcp.sh" >/dev/null
371
428
  grep -F "@playwright/mcp@0.0.78" "$ROOT/docs/mcp-and-tools.md" >/dev/null
372
- grep -R "https://mcp.figma.com/mcp" "$ROOT/scripts/configure-mcp.sh" "$ROOT/docs/mcp-and-tools.md" >/dev/null
429
+ require_documented "https://mcp.figma.com/mcp" "$ROOT/scripts/configure-mcp.sh" "$ROOT/docs/mcp-and-tools.md"
373
430
  grep -F "ghcr.io/github/github-mcp-server@sha256:2b0c48b070f61e9d3969269ead600f62d00fb237b60ac849ef3d166ee7de9ad3" "$ROOT/scripts/configure-mcp.sh" >/dev/null
374
431
  grep -F "ghcr.io/github/github-mcp-server@sha256:2b0c48b070f61e9d3969269ead600f62d00fb237b60ac849ef3d166ee7de9ad3" "$ROOT/docs/mcp-and-tools.md" >/dev/null
375
432
  grep -F '"GITHUB_READ_ONLY=1"' "$ROOT/scripts/configure-mcp.sh" >/dev/null
@@ -386,20 +443,20 @@ if grep -E '@latest|"@upstash/context7-mcp"|"chrome-devtools-mcp"|"@playwright/m
386
443
  echo "MCP production presets contain a mutable dependency source"
387
444
  exit 1
388
445
  fi
389
- grep -R "Ctrl+L" "$ROOT/README.md" "$ROOT/docs/model-options.md" "$ROOT/docs/team-onboarding.md" "$ROOT/docs/quickstart-vietnamese.md" >/dev/null
390
- grep -R "/platform-improve" "$ROOT/packages/piagent-core/prompts" "$ROOT/docs" >/dev/null
391
- grep -R "/be-to-fe" "$ROOT/packages/piagent-core/prompts" "$ROOT/docs" >/dev/null
392
- grep -R "/scout" "$ROOT/packages/piagent-core/prompts" "$ROOT/docs" "$ROOT/README.md" >/dev/null
393
- grep -R "piagent_context_preflight" "$ROOT/packages/piagent-core" "$ROOT/docs" >/dev/null
394
- grep -R ".pi/task-inbox" "$ROOT/.gitignore" "$ROOT/templates/project/.pi/.gitignore" "$ROOT/docs" >/dev/null
395
- grep -R "Task Implementation Contract" "$ROOT/docs" "$ROOT/packages/piagent-core/prompts" >/dev/null
396
- grep -R "piagent-task-trace" "$ROOT/packages/piagent-core/extensions/piagent-guard.ts" "$ROOT/docs" >/dev/null
397
- grep -R "piagent-source-cache" "$ROOT/packages/piagent-core/skills" "$ROOT/templates/project/AGENTS.md" >/dev/null
398
- grep -R "piagent_source_checkout" "$ROOT/packages/piagent-core" >/dev/null
399
- grep -R "scripts/setup.sh" "$ROOT/README.md" "$ROOT/docs" >/dev/null
400
- grep -R "quality-benchmark.sh" "$ROOT/README.md" "$ROOT/docs" >/dev/null
401
- grep -R "piagent-capabilities" "$ROOT/README.md" "$ROOT/docs/capability-packs.md" >/dev/null
402
- grep -R ".pi-subagents/" "$ROOT/.gitignore" "$ROOT/docs/subagents-and-multiagent.md" "$ROOT/docs/distribution-standard.md" "$ROOT/scripts/init-project.sh" >/dev/null
446
+ require_documented "Ctrl+L" "$ROOT/README.md" "$ROOT/docs/model-options.md" "$ROOT/docs/team-onboarding.md" "$ROOT/docs/quickstart-vietnamese.md"
447
+ require_documented "/platform-improve" "$ROOT/packages/piagent-core/prompts" "$ROOT/docs"
448
+ require_documented "/be-to-fe" "$ROOT/packages/piagent-core/prompts" "$ROOT/docs"
449
+ require_documented "/scout" "$ROOT/packages/piagent-core/prompts" "$ROOT/docs" "$ROOT/README.md"
450
+ require_documented "piagent_context_preflight" "$ROOT/packages/piagent-core" "$ROOT/docs"
451
+ require_documented ".pi/task-inbox" "$ROOT/.gitignore" "$ROOT/templates/project/.pi/.gitignore" "$ROOT/docs"
452
+ require_documented "Task Implementation Contract" "$ROOT/docs" "$ROOT/packages/piagent-core/prompts"
453
+ require_documented "piagent-task-trace" "$ROOT/packages/piagent-core/extensions/piagent-guard.ts" "$ROOT/docs"
454
+ require_documented "piagent-source-cache" "$ROOT/packages/piagent-core/skills" "$ROOT/templates/project/AGENTS.md"
455
+ require_documented "piagent_source_checkout" "$ROOT/packages/piagent-core"
456
+ require_documented "scripts/setup.sh" "$ROOT/README.md" "$ROOT/docs"
457
+ require_documented "quality-benchmark.sh" "$ROOT/README.md" "$ROOT/docs"
458
+ require_documented "piagent-capabilities" "$ROOT/README.md" "$ROOT/docs/capability-packs.md"
459
+ require_documented ".pi-subagents/" "$ROOT/.gitignore" "$ROOT/docs/subagents-and-multiagent.md" "$ROOT/docs/distribution-standard.md" "$ROOT/scripts/init-project.sh"
403
460
  test -s "$ROOT/tests/policy-core.test.mjs"
404
461
 
405
462
  public_wording_pattern="$(
@@ -451,9 +508,10 @@ node --check "$ROOT/scripts/piagent-cli.mjs" >/dev/null
451
508
  node --check "$ROOT/scripts/migrate-project-state.mjs" >/dev/null
452
509
  node --check "$ROOT/scripts/import-agent-instructions.mjs" >/dev/null
453
510
  node --check "$ROOT/scripts/check-runtime-advisories.mjs" >/dev/null
454
- (cd "$ROOT" && npm test) >/dev/null
511
+ node --check "$ROOT/scripts/check-published-site.mjs" >/dev/null
512
+ run_quietly "npm test" npm test
455
513
  if [[ -x "$ROOT/node_modules/.bin/tsc" ]]; then
456
- (cd "$ROOT" && npm run typecheck) >/dev/null
514
+ run_quietly "npm run typecheck" npm run typecheck
457
515
  fi
458
516
  bash -n "$ROOT/scripts/quality-benchmark.sh"
459
517
  bash -n "$ROOT/scripts/runtime-policy-smoke.sh"
@@ -465,6 +523,7 @@ bash -n "$ROOT/scripts/configure-mcp.sh"
465
523
  bash -n "$ROOT/scripts/configure-subagents.sh"
466
524
  bash -n "$ROOT/scripts/install-global.sh"
467
525
  bash -n "$ROOT/scripts/init-project.sh"
526
+ bash -n "$ROOT/scripts/uninstall-global.sh"
468
527
  bash -n "$ROOT/scripts/setup.sh"
469
528
  if [[ "$OFFLINE" == true || "${PIAGENT_VERIFY_OFFLINE:-}" == "1" || "${CI:-}" == "true" ]]; then
470
529
  echo "WARN: skipping local Pi model catalog check in offline/CI mode" >&2