zob-harness 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.pi/capabilities/zob-public-runtime-capabilities.json +4 -4
- package/.pi/extensions/zob-child-safety/AGENTS.md +12 -0
- package/.pi/extensions/zob-child-safety/index.ts +4 -105
- package/.pi/extensions/zob-child-safety/src/AGENTS.md +10 -0
- package/.pi/extensions/zob-child-safety/src/policy.ts +106 -0
- package/.pi/extensions/zob-harness/AGENTS.md +2 -0
- package/.pi/extensions/zob-harness/index.ts +94 -94
- package/.pi/extensions/zob-harness/src/AGENTS.md +4 -0
- package/.pi/extensions/zob-harness/src/core/AGENTS.md +24 -0
- package/.pi/extensions/zob-harness/src/{constants.ts → core/constants.ts} +10 -1
- package/.pi/extensions/zob-harness/src/core/utils/AGENTS.md +23 -0
- package/.pi/extensions/zob-harness/src/{utils → core/utils}/formatting.ts +1 -1
- package/.pi/extensions/zob-harness/src/{utils → core/utils}/records.ts +1 -1
- package/.pi/extensions/zob-harness/src/{utils → core/utils}/resources.ts +1 -1
- package/.pi/extensions/zob-harness/src/domains/AGENTS.md +23 -0
- package/.pi/extensions/zob-harness/src/domains/autonomy/AGENTS.md +21 -0
- package/.pi/extensions/zob-harness/src/{autonomous-runtime.ts → domains/autonomy/autonomous-runtime.ts} +22 -22
- package/.pi/extensions/zob-harness/src/{autonomy-readiness.ts → domains/autonomy/autonomy-readiness.ts} +18 -18
- package/.pi/extensions/zob-harness/src/{daemon-policy.ts → domains/autonomy/daemon-policy.ts} +6 -6
- package/.pi/extensions/zob-harness/src/{daemon-readiness.ts → domains/autonomy/daemon-readiness.ts} +7 -7
- package/.pi/extensions/zob-harness/src/{daemon-runtime.ts → domains/autonomy/daemon-runtime.ts} +2 -2
- package/.pi/extensions/zob-harness/src/{full-autonomy-test.ts → domains/autonomy/full-autonomy-test.ts} +4 -4
- package/.pi/extensions/zob-harness/src/{interactive-autonomy.ts → domains/autonomy/interactive-autonomy.ts} +2 -2
- package/.pi/extensions/zob-harness/src/{compute-profile.ts → domains/compute/compute-profile.ts} +3 -3
- package/.pi/extensions/zob-harness/src/{compute-workflow-shape.ts → domains/compute/compute-workflow-shape.ts} +3 -3
- package/.pi/extensions/zob-harness/src/domains/coms/AGENTS.md +21 -0
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/envelope.ts +2 -2
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/identity.ts +3 -3
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/ledger-bridge.ts +2 -2
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/local-transport.ts +1 -1
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/policy.ts +3 -3
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/presence.ts +1 -1
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/registry.ts +47 -4
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/response-capture.ts +1 -1
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/transcript-capture.ts +2 -2
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/zpeer-profile.ts +3 -3
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/zpeer.ts +35 -7
- package/.pi/extensions/zob-harness/src/{mission-control.ts → domains/coms/mission-control.ts} +12 -9
- package/.pi/extensions/zob-harness/src/{zagents.ts → domains/coms/zagents.ts} +86 -4
- package/.pi/extensions/zob-harness/src/domains/context/AGENTS.md +20 -0
- package/.pi/extensions/zob-harness/src/{context-gbrain.ts → domains/context/context-gbrain.ts} +4 -4
- package/.pi/extensions/zob-harness/src/domains/delegation/AGENTS.md +21 -0
- package/.pi/extensions/zob-harness/src/{agents.ts → domains/delegation/agents.ts} +2 -2
- package/.pi/extensions/zob-harness/src/{capabilities.ts → domains/delegation/capabilities.ts} +6 -6
- package/.pi/extensions/zob-harness/src/{child-runner.ts → domains/delegation/child-runner.ts} +8 -8
- package/.pi/extensions/zob-harness/src/{output-contracts.ts → domains/delegation/output-contracts.ts} +1 -1
- package/.pi/extensions/zob-harness/src/{prompt-packs.ts → domains/delegation/prompt-packs.ts} +4 -4
- package/.pi/extensions/zob-harness/src/domains/factory/AGENTS.md +21 -0
- package/.pi/extensions/zob-harness/src/{factory → domains/factory}/agentic-plan.ts +1 -1
- package/.pi/extensions/zob-harness/src/{factory-selector.ts → domains/factory/factory-selector.ts} +4 -4
- package/.pi/extensions/zob-harness/src/{factory → domains/factory}/quarantine.ts +5 -5
- package/.pi/extensions/zob-harness/src/{factory → domains/factory}/run.ts +5 -5
- package/.pi/extensions/zob-harness/src/{factory → domains/factory}/validation.ts +10 -10
- package/.pi/extensions/zob-harness/src/domains/git/AGENTS.md +20 -0
- package/.pi/extensions/zob-harness/src/{git-ops.ts → domains/git/git-ops.ts} +3 -3
- package/.pi/extensions/zob-harness/src/domains/goal/AGENTS.md +22 -0
- package/.pi/extensions/zob-harness/src/{goal-room.ts → domains/goal/goal-room.ts} +7 -7
- package/.pi/extensions/zob-harness/src/{goal-todo-imports.ts → domains/goal/goal-todo-imports.ts} +1 -1
- package/.pi/extensions/zob-harness/src/{goal-todo-types.ts → domains/goal/goal-todo-types.ts} +1 -1
- package/.pi/extensions/zob-harness/src/{goal-todos.ts → domains/goal/goal-todos.ts} +4 -4
- package/.pi/extensions/zob-harness/src/{goal.ts → domains/goal/goal.ts} +1 -1
- package/.pi/extensions/zob-harness/src/domains/governance/AGENTS.md +21 -0
- package/.pi/extensions/zob-harness/src/{budget-policy.ts → domains/governance/budget-policy.ts} +6 -6
- package/.pi/extensions/zob-harness/src/{governed-requests.ts → domains/governance/governed-requests.ts} +7 -7
- package/.pi/extensions/zob-harness/src/{launch-apply.ts → domains/governance/launch-apply.ts} +4 -4
- package/.pi/extensions/zob-harness/src/{merge-queue.ts → domains/governance/merge-queue.ts} +6 -6
- package/.pi/extensions/zob-harness/src/{rules.ts → domains/governance/rules.ts} +7 -7
- package/.pi/extensions/zob-harness/src/{safety.ts → domains/governance/safety.ts} +3 -3
- package/.pi/extensions/zob-harness/src/{sandbox.ts → domains/governance/sandbox.ts} +5 -5
- package/.pi/extensions/zob-harness/src/{worker-pool.ts → domains/governance/worker-pool.ts} +7 -7
- package/.pi/extensions/zob-harness/src/{workspace-claims.ts → domains/governance/workspace-claims.ts} +6 -6
- package/.pi/extensions/zob-harness/src/domains/models/AGENTS.md +20 -0
- package/.pi/extensions/zob-harness/src/{model-availability.ts → domains/models/model-availability.ts} +1 -1
- package/.pi/extensions/zob-harness/src/{model-routing.ts → domains/models/model-routing.ts} +6 -6
- package/.pi/extensions/zob-harness/src/domains/orchestration/AGENTS.md +21 -0
- package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/adaptive-delegation.ts +8 -8
- package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/adaptive-workflow.ts +4 -4
- package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/lead-plan.ts +5 -5
- package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/plan.ts +5 -5
- package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/room.ts +4 -4
- package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/run.ts +6 -6
- package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/supervised-readonly.ts +6 -6
- package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/widget-readers.ts +2 -2
- package/.pi/extensions/zob-harness/src/domains/project-dna/AGENTS.md +19 -0
- package/.pi/extensions/zob-harness/src/{project-dna.ts → domains/project-dna/project-dna.ts} +4 -4
- package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/candidate.ts +5 -5
- package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/coms.ts +3 -3
- package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/documentation.ts +4 -4
- package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/factory.ts +2 -2
- package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/temp-agent.ts +4 -4
- package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/write-lane.ts +3 -3
- package/.pi/extensions/zob-harness/src/domains/telemetry/AGENTS.md +19 -0
- package/.pi/extensions/zob-harness/src/{chronicle.ts → domains/telemetry/chronicle.ts} +3 -3
- package/.pi/extensions/zob-harness/src/{queue.ts → domains/telemetry/queue.ts} +7 -7
- package/.pi/extensions/zob-harness/src/{telemetry.ts → domains/telemetry/telemetry.ts} +4 -4
- package/.pi/extensions/zob-harness/src/{topology → domains/topology}/chains.ts +10 -10
- package/.pi/extensions/zob-harness/src/{topology → domains/topology}/coms.ts +3 -3
- package/.pi/extensions/zob-harness/src/{topology → domains/topology}/orchestration-profiles.ts +8 -8
- package/.pi/extensions/zob-harness/src/{topology → domains/topology}/teams.ts +8 -8
- package/.pi/extensions/zob-harness/src/runtime/adaptive-zmode.ts +2 -2
- package/.pi/extensions/zob-harness/src/runtime/auto-compaction.ts +2 -2
- package/.pi/extensions/zob-harness/src/runtime/commands.ts +51 -29
- package/.pi/extensions/zob-harness/src/runtime/compaction-policy.ts +2 -2
- package/.pi/extensions/zob-harness/src/runtime/delegation-feed.ts +1 -1
- package/.pi/extensions/zob-harness/src/runtime/delegation-monitor.ts +1 -1
- package/.pi/extensions/zob-harness/src/runtime/events.ts +53 -37
- package/.pi/extensions/zob-harness/src/{goal-runtime.ts → runtime/goal-runtime.ts} +9 -9
- package/.pi/extensions/zob-harness/src/runtime/goal-todo-overlay.ts +1 -1
- package/.pi/extensions/zob-harness/src/runtime/plan-capture.ts +2 -2
- package/.pi/extensions/zob-harness/src/runtime/state.ts +15 -13
- package/.pi/extensions/zob-harness/src/runtime/tools-autonomous.ts +2 -2
- package/.pi/extensions/zob-harness/src/runtime/tools-compute.ts +3 -3
- package/.pi/extensions/zob-harness/src/runtime/tools-coms.ts +15 -12
- package/.pi/extensions/zob-harness/src/runtime/tools-context.ts +2 -2
- package/.pi/extensions/zob-harness/src/runtime/tools-delegation.ts +13 -13
- package/.pi/extensions/zob-harness/src/runtime/tools-factory.ts +19 -19
- package/.pi/extensions/zob-harness/src/runtime/tools-goal-room.ts +3 -3
- package/.pi/extensions/zob-harness/src/runtime/tools-governed-requests.ts +3 -3
- package/.pi/extensions/zob-harness/src/runtime/tools-merge-queue.ts +3 -3
- package/.pi/extensions/zob-harness/src/runtime/tools-mission-control.ts +3 -3
- package/.pi/extensions/zob-harness/src/runtime/tools-orchestration.ts +9 -9
- package/.pi/extensions/zob-harness/src/runtime/tools-project-dna.ts +2 -2
- package/.pi/extensions/zob-harness/src/runtime/tools-worker-pool.ts +3 -3
- package/.pi/extensions/zob-harness/src/runtime/tools-workspace-claims.ts +3 -3
- package/.pi/extensions/zob-harness/src/runtime/tools-zcommit.ts +3 -3
- package/.pi/extensions/zob-harness/src/runtime/widget.ts +27 -10
- package/.pi/extensions/zob-harness/src/runtime/zobHarness.ts +1 -1
- package/.pi/extensions/zob-harness/src/types.ts +2 -2
- package/.pi/extensions/zob-switch/AGENTS.md +9 -0
- package/.pi/extensions/zob-switch/index.ts +9 -121
- package/.pi/extensions/zob-switch/src/AGENTS.md +8 -0
- package/.pi/extensions/zob-switch/src/autocomplete.ts +12 -0
- package/.pi/extensions/zob-switch/src/paths.ts +8 -0
- package/.pi/extensions/zob-switch/src/settings.ts +25 -0
- package/.pi/extensions/zob-switch/src/snapshot.ts +34 -0
- package/.pi/extensions/zob-switch/src/state.ts +57 -0
- package/.pi/factories/agentic-spec-team/README.md +35 -0
- package/.pi/factories/agentic-spec-team/batch-manifest.json +11 -0
- package/.pi/factories/agentic-spec-team/example-agentic-spec-manifest.json +19 -0
- package/.pi/factories/agentic-spec-team/factory.json +98 -0
- package/.pi/factories/agentic-spec-team/pilot-manifest.json +11 -0
- package/.pi/factories/agentic-spec-team/schemas/final-report.schema.json +15 -0
- package/.pi/factories/agentic-spec-team/schemas/manifest.schema.json +14 -0
- package/.pi/factories/agentic-spec-team/schemas/question.schema.json +18 -0
- package/.pi/factories/agentic-spec-team/schemas/source-register.schema.json +11 -0
- package/.pi/factories/agentic-spec-team/schemas/traceability.schema.json +11 -0
- package/.pi/factories/agentic-spec-team/smoke-manifest.json +11 -0
- package/.pi/skills/zob-agentic-spec-team/SKILL.md +148 -0
- package/.pi/skills/zob-coms-safety/SKILL.md +13 -0
- package/.pi/skills/zob-coms-v2-live/SKILL.md +11 -0
- package/.pi/skills/zob-factory/SKILL.md +21 -0
- package/.pi/skills/zob-harness/SKILL.md +14 -0
- package/.pi/skills/zob-split-refactor/SKILL.md +1 -1
- package/.pi/skills/zob-zagent-creator/SKILL.md +266 -12
- package/.pi/zagents/agent-factory-pacman-chief.json +22 -0
- package/.pi/zagents/agent-factory-pacman-engine-builder.json +21 -0
- package/.pi/zagents/agent-factory-pacman-frontend-builder.json +21 -0
- package/.pi/zagents/agent-factory-pacman-game-architect.json +21 -0
- package/.pi/zagents/agent-factory-pacman-game-designer.json +21 -0
- package/.pi/zagents/agent-factory-pacman-qa-oracle.json +21 -0
- package/.pi/zagents/bdd-writer.json +20 -0
- package/.pi/zagents/data-profile-analyst.json +20 -0
- package/.pi/zagents/domain-modeler.json +20 -0
- package/.pi/zagents/planner-handoff-writer.json +20 -0
- package/.pi/zagents/prompts/agent-factory-pacman-chief.md +53 -0
- package/.pi/zagents/prompts/agent-factory-pacman-engine-builder.md +41 -0
- package/.pi/zagents/prompts/agent-factory-pacman-frontend-builder.md +40 -0
- package/.pi/zagents/prompts/agent-factory-pacman-game-architect.md +41 -0
- package/.pi/zagents/prompts/agent-factory-pacman-game-designer.md +43 -0
- package/.pi/zagents/prompts/agent-factory-pacman-qa-oracle.md +51 -0
- package/.pi/zagents/prompts/agentic-spec-run-role.md +30 -0
- package/.pi/zagents/source-intake-steward.json +20 -0
- package/.pi/zagents/spec-chief.json +21 -0
- package/.pi/zagents/spec-oracle.json +20 -0
- package/.pi/zagents/spec-writer.json +20 -0
- package/.pi/zagents/ux-flow-analyst.json +20 -0
- package/.pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs +384 -0
- package/.pi/zteams/agent-factory-pacman-multiplayer.json +42 -0
- package/.pi/zteams/agent-factory-pacman-multiplayer.tmux.sh +256 -0
- package/.pi/zteams/agentic-spec-run.json +42 -0
- package/.pi/zteams/agentic-spec-run.tmux.sh +134 -0
- package/.pi/zteams/templates/agent-factory-pacman-chief-kickoff.template.md +71 -0
- package/.pi/zteams/templates/agent-factory-pacman-worker-kickoff.template.md +59 -0
- package/README.md +183 -110
- package/SOURCE_INDEX.md +5 -1
- package/examples/agent-factory-mission-control/AGENTS.md +10 -0
- package/examples/agent-factory-mission-control/README.md +17 -0
- package/examples/agent-factory-mission-control/apps/api/AGENTS.md +3 -0
- package/examples/agent-factory-mission-control/apps/dashboard/AGENTS.md +3 -0
- package/examples/agent-factory-mission-control/mission.md +3 -0
- package/examples/agent-factory-mission-control/output-contract.md +3 -0
- package/examples/agent-factory-mission-control/packages/domain/AGENTS.md +3 -0
- package/examples/agent-factory-mission-control/packages/snapshot-reader/AGENTS.md +3 -0
- package/examples/agent-factory-pacman-multiplayer/AGENTS.md +27 -0
- package/examples/agent-factory-pacman-multiplayer/README.md +84 -0
- package/examples/agent-factory-pacman-multiplayer/mission.md +43 -0
- package/examples/agent-factory-pacman-multiplayer/output-contract.md +58 -0
- package/examples/agent-factory-tmux-comms/README.md +146 -0
- package/examples/agent-factory-tmux-comms/chief-kickoff.template.md +54 -0
- package/examples/agent-factory-tmux-comms/simple-agent-factory.team.json +92 -0
- package/examples/agent-factory-tmux-comms/simple-agent-factory.tmux.sh +248 -0
- package/examples/agent-factory-tmux-comms/worker-kickoff.template.md +43 -0
- package/package.json +17 -3
- package/scripts/README.md +1 -1
- package/scripts/agentic-spec-team/validate-bdd.mjs +13 -0
- package/scripts/agentic-spec-team/validate-final-report.mjs +14 -0
- package/scripts/agentic-spec-team/validate-manifest.mjs +14 -0
- package/scripts/agentic-spec-team/validate-oracle-ready.mjs +13 -0
- package/scripts/agentic-spec-team/validate-question-loop.mjs +15 -0
- package/scripts/agentic-spec-team/validate-run.mjs +11 -0
- package/scripts/agentic-spec-team/validate-source-register.mjs +17 -0
- package/scripts/agentic-spec-team/validate-traceability.mjs +20 -0
- package/scripts/agentic-spec-team/validate-workgraph.mjs +13 -0
- package/scripts/autonomy/mission-readiness-secret-smoke.mjs +5 -5
- package/scripts/git-ops/commit-policy-smoke.mjs +5 -4
- package/scripts/goal-todo/child-goal-ref-smoke.mjs +2 -2
- package/scripts/path-policy/validate-smoke.mjs +3 -3
- package/scripts/project-dna/AGENTS.md +39 -0
- package/scripts/project-dna/{validate-scaffold.mjs → validation/validate-scaffold.mjs} +7 -7
- package/scripts/spec-run.mjs +365 -0
- package/scripts/worker-pool/static-smoke.mjs +5 -5
- package/scripts/zagent-static-smoke.mjs +35 -6
- package/scripts/zpeer-local-e2e-smoke.mjs +12 -5
- package/scripts/zpeer-static-smoke.mjs +17 -17
- /package/.pi/extensions/zob-harness/src/{types → core/types}/core.ts +0 -0
- /package/.pi/extensions/zob-harness/src/{utils → core/utils}/hashing.ts +0 -0
- /package/.pi/extensions/zob-harness/src/{utils → core/utils}/json.ts +0 -0
- /package/.pi/extensions/zob-harness/src/{utils → core/utils}/paths.ts +0 -0
- /package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/AGENTS.md +0 -0
- /package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/pending-replies.ts +0 -0
- /package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/types.ts +0 -0
- /package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/ledger.ts +0 -0
- /package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/types.ts +0 -0
- /package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/validate.ts +0 -0
- /package/.pi/extensions/zob-harness/src/{schemas-project-dna.ts → runtime/schemas-project-dna.ts} +0 -0
- /package/.pi/extensions/zob-harness/src/{schemas.ts → runtime/schemas.ts} +0 -0
- /package/scripts/project-dna/{bench-smoke.mjs → benchmark/bench-smoke.mjs} +0 -0
- /package/scripts/project-dna/{build-capsules.mjs → capsules/build-capsules.mjs} +0 -0
- /package/scripts/project-dna/{emit-golden-cases.mjs → emit/emit-golden-cases.mjs} +0 -0
- /package/scripts/project-dna/{emit-ontology.mjs → emit/emit-ontology.mjs} +0 -0
- /package/scripts/project-dna/{oracle-review-smoke.mjs → oracle/oracle-review-smoke.mjs} +0 -0
- /package/scripts/project-dna/{query-context.mjs → query/query-context.mjs} +0 -0
- /package/scripts/project-dna/{query-steward.mjs → query/query-steward.mjs} +0 -0
- /package/scripts/project-dna/{build-sample-spec.mjs → sample/build-sample-spec.mjs} +0 -0
- /package/scripts/project-dna/{generate-sample.mjs → sample/generate-sample.mjs} +0 -0
- /package/scripts/project-dna/{validate-sample-project.mjs → sample/validate-sample-project.mjs} +0 -0
- /package/scripts/project-dna/{scan.mjs → scan/scan.mjs} +0 -0
- /package/scripts/project-dna/{validate-scan-artifacts.mjs → scan/validate-scan-artifacts.mjs} +0 -0
- /package/scripts/project-dna/{validate-5of5.mjs → validation/validate-5of5.mjs} +0 -0
- /package/scripts/project-dna/{validate-golden-cases.mjs → validation/validate-golden-cases.mjs} +0 -0
- /package/scripts/project-dna/{validate-ontology.mjs → validation/validate-ontology.mjs} +0 -0
- /package/scripts/project-dna/{plan-workflow.mjs → workflow/plan-workflow.mjs} +0 -0
- /package/scripts/project-dna/{validate-workflow.mjs → workflow/validate-workflow.mjs} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
|
|
3
|
-
import { AutonomousDryRunParams, AutonomousReadOnlySmokeParams, AutonomousValidateRunParams, AutonomousValidateSmokeParams } from "
|
|
4
|
-
import { validateAutonomousReadOnlySmokeRunArtifacts, validateAutonomousRuntimeDryRunArtifacts, writeAutonomousReadOnlySmokeRunReport, writeAutonomousRuntimeDryRunReport } from "../autonomous-runtime.js";
|
|
3
|
+
import { AutonomousDryRunParams, AutonomousReadOnlySmokeParams, AutonomousValidateRunParams, AutonomousValidateSmokeParams } from "./schemas.js";
|
|
4
|
+
import { validateAutonomousReadOnlySmokeRunArtifacts, validateAutonomousRuntimeDryRunArtifacts, writeAutonomousReadOnlySmokeRunReport, writeAutonomousRuntimeDryRunReport } from "../domains/autonomy/autonomous-runtime.js";
|
|
5
5
|
|
|
6
6
|
export function registerAutonomousTools(pi: ExtensionAPI): void {
|
|
7
7
|
pi.registerTool({
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
|
|
3
|
-
import { buildComputePreview, resolveComputeProfile, validateComputeProfileArtifacts, writeComputeProfileReports } from "../compute-profile.js";
|
|
4
|
-
import { buildComputeWorkflowShape } from "../compute-workflow-shape.js";
|
|
5
|
-
import { ComputePlanWorkflowParams, ComputePreviewParams, ComputeResolveProfileParams, ComputeValidateProfileParams, ComputeWriteProfileReportsParams } from "
|
|
3
|
+
import { buildComputePreview, resolveComputeProfile, validateComputeProfileArtifacts, writeComputeProfileReports } from "../domains/compute/compute-profile.js";
|
|
4
|
+
import { buildComputeWorkflowShape } from "../domains/compute/compute-workflow-shape.js";
|
|
5
|
+
import { ComputePlanWorkflowParams, ComputePreviewParams, ComputeResolveProfileParams, ComputeValidateProfileParams, ComputeWriteProfileReportsParams } from "./schemas.js";
|
|
6
6
|
|
|
7
7
|
export function registerComputeTools(pi: ExtensionAPI): void {
|
|
8
8
|
pi.registerTool({
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
import { readZobComsV2Policy } from "../coms-v2/policy.js";
|
|
3
|
-
import { readZobLiveRegistrySnapshot } from "../coms-v2/registry.js";
|
|
4
|
-
import { peerAliasInRoom, refreshZpeerSelf, safeZpeerAlias, safeZpeerRoomId, sendZpeerPrompt, type ZpeerSendMode, type ZpeerSendResult } from "../coms-v2/zpeer.js";
|
|
5
|
-
import { buildZobLiveEnvelope } from "../coms-v2/envelope.js";
|
|
6
|
-
import { sendZobLocalEnvelope } from "../coms-v2/local-transport.js";
|
|
7
|
-
import { appendLiveDeliveredStatus, appendLiveErrorStatus, appendLiveSendRequestedRef } from "../coms-v2/ledger-bridge.js";
|
|
8
|
-
import { writeZobComsRedactedCapture } from "../coms-v2/transcript-capture.js";
|
|
2
|
+
import { readZobComsV2Policy } from "../domains/coms/coms-v2/policy.js";
|
|
3
|
+
import { readZobLiveRegistrySnapshot } from "../domains/coms/coms-v2/registry.js";
|
|
4
|
+
import { peerAliasInRoom, refreshZpeerSelf, safeZpeerAlias, safeZpeerRoomId, sendZpeerPrompt, type ZpeerSendMode, type ZpeerSendResult } from "../domains/coms/coms-v2/zpeer.js";
|
|
5
|
+
import { buildZobLiveEnvelope } from "../domains/coms/coms-v2/envelope.js";
|
|
6
|
+
import { sendZobLocalEnvelope } from "../domains/coms/coms-v2/local-transport.js";
|
|
7
|
+
import { appendLiveDeliveredStatus, appendLiveErrorStatus, appendLiveSendRequestedRef } from "../domains/coms/coms-v2/ledger-bridge.js";
|
|
8
|
+
import { writeZobComsRedactedCapture } from "../domains/coms/coms-v2/transcript-capture.js";
|
|
9
9
|
import type { TeamDefinition } from "../types.js";
|
|
10
|
-
import { sha256 } from "../utils/hashing.js";
|
|
10
|
+
import { sha256 } from "../core/utils/hashing.js";
|
|
11
11
|
import {
|
|
12
12
|
ZobComsAckParams,
|
|
13
13
|
ZobComsAwaitParams,
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
ZobComsSendParams,
|
|
18
18
|
ZobComsStatusParams,
|
|
19
19
|
ZpeerAskParams,
|
|
20
|
-
} from "
|
|
20
|
+
} from "./schemas.js";
|
|
21
21
|
import {
|
|
22
22
|
ackZobComsMessage,
|
|
23
23
|
appendZobComsMessage,
|
|
@@ -26,8 +26,8 @@ import {
|
|
|
26
26
|
listZobComsMessages,
|
|
27
27
|
replyZobComsMessage,
|
|
28
28
|
transitionZobComsStatus,
|
|
29
|
-
} from "../topology/coms.js";
|
|
30
|
-
import { loadTeamDefinition, validateTeamDefinition } from "../topology/teams.js";
|
|
29
|
+
} from "../domains/topology/coms.js";
|
|
30
|
+
import { loadTeamDefinition, validateTeamDefinition } from "../domains/topology/teams.js";
|
|
31
31
|
import type { HarnessRuntimeState } from "./state.js";
|
|
32
32
|
|
|
33
33
|
const SHA256_HEX = /^[a-f0-9]{64}$/i;
|
|
@@ -240,7 +240,10 @@ export function registerComsTools(pi: ExtensionAPI, state?: HarnessRuntimeState)
|
|
|
240
240
|
pi.appendEntry("zob-zpeer", { schema: "zob.zpeer-ask.v1", action: "agent_request", mode, status: result.status, reasonHash: result.reason ? sha256(result.reason) : undefined, msgId: result.msgId, targetAliasHash: result.targetAlias ? sha256(result.targetAlias) : sha256(targetAlias), roomIdHash: sha256(result.roomId ?? requestedRoomId), taskHash: result.taskHash, outputHash: result.outputHash, reasonInputHash: params.reason ? sha256(params.reason) : undefined, localOnly: true, networkEnabled: false, bodyStored: false, promptBodiesStored: false, outputBodiesStored: false, generatedAt: new Date().toISOString() });
|
|
241
241
|
const ok = result.status === "reply" || result.status === "completed" || result.status === "waiting" || result.status === "delivered";
|
|
242
242
|
const passiveWaitSuffix = result.status === "waiting" ? " · idle/passive wait: no follow-up turn queued; stop if no other action is actionable" : "";
|
|
243
|
-
|
|
243
|
+
const transientReplyText = (result.status === "reply" || result.status === "completed") && result.transientResponse
|
|
244
|
+
? `\n\nTransient ZPeer reply (not stored in .pi/coms):\n${result.transientResponse}`
|
|
245
|
+
: "";
|
|
246
|
+
return { content: [{ type: "text", text: ok ? `zpeer_ask ${result.status}: @${result.targetAlias ?? targetAlias}${result.outputHash ? ` outputHash=${result.outputHash}` : ""}${passiveWaitSuffix}${transientReplyText}` : `zpeer_ask ${result.status}: ${result.reason ?? "see metadata"}` }], details: { schema: "zob.zpeer-ask-result.v1", mode, ...result } };
|
|
244
247
|
},
|
|
245
248
|
});
|
|
246
249
|
|
|
@@ -4,13 +4,13 @@ import {
|
|
|
4
4
|
ContextReadinessParams,
|
|
5
5
|
ContextScopeValidateParams,
|
|
6
6
|
ContextWritebackProposalParams,
|
|
7
|
-
} from "
|
|
7
|
+
} from "./schemas.js";
|
|
8
8
|
import {
|
|
9
9
|
buildContextGbrainReadinessAudit,
|
|
10
10
|
buildDefaultContextScope,
|
|
11
11
|
validateContextScope,
|
|
12
12
|
writeContextWritebackProposal,
|
|
13
|
-
} from "../context-gbrain.js";
|
|
13
|
+
} from "../domains/context/context-gbrain.js";
|
|
14
14
|
|
|
15
15
|
export function registerContextTools(pi: ExtensionAPI): void {
|
|
16
16
|
pi.registerTool({
|
|
@@ -4,14 +4,14 @@ import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-a
|
|
|
4
4
|
import { Text } from "@earendil-works/pi-tui";
|
|
5
5
|
|
|
6
6
|
import type { AgentScope, ChildResult, ChildStopCondition, ChildThinkingLevel, DelegationDetails, DelegationFailureKind } from "../types.js";
|
|
7
|
-
import { AwaitDelegationRunParams, DelegateParams, DelegateTaskParams, DelegationCatalogParams, DelegationRunParams } from "
|
|
8
|
-
import { discoverAgents, formatAgentList } from "../agents.js";
|
|
9
|
-
import { applyTodoSplitRequest, extractTodoClaimFromText, extractTodoClaimValidationFromText, extractTodoSplitRequestFromText, isActionableTodoClaimValidation, isActionableTodoSplitRequest, linkGoalTodoDelegation, recordGoalTodoClaimValidationResult, requestGoalTodoClaimValidation, resolveGoalTodoReference, returnGoalTodoClaim, type GoalTodoNode } from "../goal-todos.js";
|
|
10
|
-
import { isFailed, mapWithConcurrency, runChildAgent, validateChildThinkingOverride } from "../child-runner.js";
|
|
11
|
-
import { classifyChildStopCondition, classifyDelegationChronicleCompletion, outputHasEvidenceMarker } from "../chronicle.js";
|
|
12
|
-
import { validateExplicitModelOverride } from "../model-availability.js";
|
|
13
|
-
import { applyChildGates, getOutputContractDefinitions, inferOutputContract, listOutputContracts, validateOutputContractId } from "../output-contracts.js";
|
|
14
|
-
import { captureZcommitChildDirtySnapshot, diffZcommitChildDirtySnapshots, type ZcommitChildChangedPathRef } from "../git-ops.js";
|
|
7
|
+
import { AwaitDelegationRunParams, DelegateParams, DelegateTaskParams, DelegationCatalogParams, DelegationRunParams } from "./schemas.js";
|
|
8
|
+
import { discoverAgents, formatAgentList } from "../domains/delegation/agents.js";
|
|
9
|
+
import { applyTodoSplitRequest, extractTodoClaimFromText, extractTodoClaimValidationFromText, extractTodoSplitRequestFromText, isActionableTodoClaimValidation, isActionableTodoSplitRequest, linkGoalTodoDelegation, recordGoalTodoClaimValidationResult, requestGoalTodoClaimValidation, resolveGoalTodoReference, returnGoalTodoClaim, type GoalTodoNode } from "../domains/goal/goal-todos.js";
|
|
10
|
+
import { isFailed, mapWithConcurrency, runChildAgent, validateChildThinkingOverride } from "../domains/delegation/child-runner.js";
|
|
11
|
+
import { classifyChildStopCondition, classifyDelegationChronicleCompletion, outputHasEvidenceMarker } from "../domains/telemetry/chronicle.js";
|
|
12
|
+
import { validateExplicitModelOverride } from "../domains/models/model-availability.js";
|
|
13
|
+
import { applyChildGates, getOutputContractDefinitions, inferOutputContract, listOutputContracts, validateOutputContractId } from "../domains/delegation/output-contracts.js";
|
|
14
|
+
import { captureZcommitChildDirtySnapshot, diffZcommitChildDirtySnapshots, type ZcommitChildChangedPathRef } from "../domains/git/git-ops.js";
|
|
15
15
|
import {
|
|
16
16
|
parseToolList,
|
|
17
17
|
resolveChildCwd,
|
|
@@ -21,11 +21,11 @@ import {
|
|
|
21
21
|
validateForbiddenPathPolicy,
|
|
22
22
|
validateSixPartContract,
|
|
23
23
|
validateToolList,
|
|
24
|
-
} from "../safety.js";
|
|
25
|
-
import { usageEmpty, writeDelegationTelemetrySummary } from "../telemetry.js";
|
|
26
|
-
import { capOutput, formatChildResultText } from "../utils/formatting.js";
|
|
27
|
-
import { sha256 } from "../utils/hashing.js";
|
|
28
|
-
import { newRunId } from "../utils/paths.js";
|
|
24
|
+
} from "../domains/governance/safety.js";
|
|
25
|
+
import { usageEmpty, writeDelegationTelemetrySummary } from "../domains/telemetry/telemetry.js";
|
|
26
|
+
import { capOutput, formatChildResultText } from "../core/utils/formatting.js";
|
|
27
|
+
import { sha256 } from "../core/utils/hashing.js";
|
|
28
|
+
import { newRunId } from "../core/utils/paths.js";
|
|
29
29
|
import {
|
|
30
30
|
delegationDurationMs,
|
|
31
31
|
delegationSignalBadge,
|
|
@@ -2,25 +2,25 @@ import { existsSync, mkdirSync, unlinkSync, writeFileSync } from "node:fs";
|
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
4
4
|
|
|
5
|
-
import { buildZobLivePresenceSummary } from "../coms-v2/presence.js";
|
|
6
|
-
import { readZobComsV2Policy } from "../coms-v2/policy.js";
|
|
7
|
-
import { discoverAgents } from "../agents.js";
|
|
8
|
-
import { evaluateStrictBudgetDispatchGate } from "../budget-policy.js";
|
|
9
|
-
import { isFailed, runChildAgent } from "../child-runner.js";
|
|
10
|
-
import { classifyChronicleCompletion, outputHasEvidenceMarker } from "../chronicle.js";
|
|
11
|
-
import { buildAgenticFactoryNoMockFinalGate, factoryLedger, runFactoryRun } from "../factory/run.js";
|
|
12
|
-
import { buildInitialAdaptiveDelegationGovernorState, buildParentDispatchContractForDecision, decideDelegationRequest, extractDelegationRequestsFromText, normalizeAdaptiveDelegationPolicy, updateGovernorState } from "../orchestration/adaptive-delegation.js";
|
|
13
|
-
import { runFactoryQuarantineActivate, runFactoryQuarantineReview, runFactoryQuarantineVerifyActivation } from "../factory/quarantine.js";
|
|
14
|
-
import { evaluateModelRoutingDispatchGate } from "../model-routing.js";
|
|
15
|
-
import { applyChildGates, inferOutputContract, validateOutputContractId } from "../output-contracts.js";
|
|
16
|
-
import { FactoryQuarantineActivateParams, FactoryQuarantineReviewParams, FactoryQuarantineVerifyActivationParams, FactoryRunParams } from "
|
|
17
|
-
import { factoryPhaseSentinelForMode, loadFactoryDefinition, loadFactoryInputManifest } from "../factory/validation.js";
|
|
18
|
-
import { validateToolList } from "../safety.js";
|
|
19
|
-
import { addUsage, usageEmpty, writeFactoryTelemetrySummary } from "../telemetry.js";
|
|
20
|
-
import { sha256 } from "../utils/hashing.js";
|
|
21
|
-
import { parseJsonFile } from "../utils/json.js";
|
|
22
|
-
import { safeFileStem } from "../utils/paths.js";
|
|
23
|
-
import { isRecord } from "../utils/records.js";
|
|
5
|
+
import { buildZobLivePresenceSummary } from "../domains/coms/coms-v2/presence.js";
|
|
6
|
+
import { readZobComsV2Policy } from "../domains/coms/coms-v2/policy.js";
|
|
7
|
+
import { discoverAgents } from "../domains/delegation/agents.js";
|
|
8
|
+
import { evaluateStrictBudgetDispatchGate } from "../domains/governance/budget-policy.js";
|
|
9
|
+
import { isFailed, runChildAgent } from "../domains/delegation/child-runner.js";
|
|
10
|
+
import { classifyChronicleCompletion, outputHasEvidenceMarker } from "../domains/telemetry/chronicle.js";
|
|
11
|
+
import { buildAgenticFactoryNoMockFinalGate, factoryLedger, runFactoryRun } from "../domains/factory/run.js";
|
|
12
|
+
import { buildInitialAdaptiveDelegationGovernorState, buildParentDispatchContractForDecision, decideDelegationRequest, extractDelegationRequestsFromText, normalizeAdaptiveDelegationPolicy, updateGovernorState } from "../domains/orchestration/adaptive-delegation.js";
|
|
13
|
+
import { runFactoryQuarantineActivate, runFactoryQuarantineReview, runFactoryQuarantineVerifyActivation } from "../domains/factory/quarantine.js";
|
|
14
|
+
import { evaluateModelRoutingDispatchGate } from "../domains/models/model-routing.js";
|
|
15
|
+
import { applyChildGates, inferOutputContract, validateOutputContractId } from "../domains/delegation/output-contracts.js";
|
|
16
|
+
import { FactoryQuarantineActivateParams, FactoryQuarantineReviewParams, FactoryQuarantineVerifyActivationParams, FactoryRunParams } from "./schemas.js";
|
|
17
|
+
import { factoryPhaseSentinelForMode, loadFactoryDefinition, loadFactoryInputManifest } from "../domains/factory/validation.js";
|
|
18
|
+
import { validateToolList } from "../domains/governance/safety.js";
|
|
19
|
+
import { addUsage, usageEmpty, writeFactoryTelemetrySummary } from "../domains/telemetry/telemetry.js";
|
|
20
|
+
import { sha256 } from "../core/utils/hashing.js";
|
|
21
|
+
import { parseJsonFile } from "../core/utils/json.js";
|
|
22
|
+
import { safeFileStem } from "../core/utils/paths.js";
|
|
23
|
+
import { isRecord } from "../core/utils/records.js";
|
|
24
24
|
import type { DelegationRequestProposal, GovernorDecision, ParentDispatchContract } from "../types.js";
|
|
25
25
|
import type { HarnessRuntimeState } from "./state.js";
|
|
26
26
|
import { strictGoalSpecErrors } from "./state.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
|
|
3
|
-
import { appendGoalRoomMessage, listGoalRoomMessages } from "../goal-room.js";
|
|
4
|
-
import { ZobGoalRoomListParams, ZobGoalRoomSendParams } from "
|
|
5
|
-
import { loadTeamDefinition, validateTeamDefinition } from "../topology/teams.js";
|
|
3
|
+
import { appendGoalRoomMessage, listGoalRoomMessages } from "../domains/goal/goal-room.js";
|
|
4
|
+
import { ZobGoalRoomListParams, ZobGoalRoomSendParams } from "./schemas.js";
|
|
5
|
+
import { loadTeamDefinition, validateTeamDefinition } from "../domains/topology/teams.js";
|
|
6
6
|
import type { TeamDefinition } from "../types.js";
|
|
7
7
|
|
|
8
8
|
export function registerGoalRoomTools(pi: ExtensionAPI): void {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
|
|
3
|
-
import { appendGovernedRequestsToGoalRoom, extractGovernedRequestsFromText, governedRequestBodyFreeViolations } from "../governed-requests.js";
|
|
4
|
-
import { GovernedRequestExtractParams } from "
|
|
5
|
-
import { loadTeamDefinition, validateTeamDefinition } from "../topology/teams.js";
|
|
3
|
+
import { appendGovernedRequestsToGoalRoom, extractGovernedRequestsFromText, governedRequestBodyFreeViolations } from "../domains/governance/governed-requests.js";
|
|
4
|
+
import { GovernedRequestExtractParams } from "./schemas.js";
|
|
5
|
+
import { loadTeamDefinition, validateTeamDefinition } from "../domains/topology/teams.js";
|
|
6
6
|
|
|
7
7
|
export function registerGovernedRequestTools(pi: ExtensionAPI): void {
|
|
8
8
|
pi.registerTool({
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
|
|
3
|
-
import { decideMergeCandidate, listMergeQueue, mergeQueueBodyFreeViolations, submitMergeCandidate } from "../merge-queue.js";
|
|
4
|
-
import { MergeCandidateSubmitParams, MergeQueueDecideParams, MergeQueueListParams } from "
|
|
5
|
-
import { loadTeamDefinition, validateTeamDefinition } from "../topology/teams.js";
|
|
3
|
+
import { decideMergeCandidate, listMergeQueue, mergeQueueBodyFreeViolations, submitMergeCandidate } from "../domains/governance/merge-queue.js";
|
|
4
|
+
import { MergeCandidateSubmitParams, MergeQueueDecideParams, MergeQueueListParams } from "./schemas.js";
|
|
5
|
+
import { loadTeamDefinition, validateTeamDefinition } from "../domains/topology/teams.js";
|
|
6
6
|
|
|
7
7
|
export function registerMergeQueueTools(pi: ExtensionAPI): void {
|
|
8
8
|
pi.registerTool({
|
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
MissionControlProposeCommandParams,
|
|
5
5
|
MissionControlSnapshotParams,
|
|
6
6
|
ZobComsReadinessParams,
|
|
7
|
-
} from "
|
|
7
|
+
} from "./schemas.js";
|
|
8
8
|
import type { TeamDefinition } from "../types.js";
|
|
9
9
|
import {
|
|
10
10
|
buildMissionControlSnapshot,
|
|
11
11
|
buildZobCommunicationReadinessAudit,
|
|
12
12
|
writeMissionControlCommandProposal,
|
|
13
|
-
} from "../mission-control.js";
|
|
14
|
-
import { loadTeamDefinition, validateTeamDefinition } from "../topology/teams.js";
|
|
13
|
+
} from "../domains/coms/mission-control.js";
|
|
14
|
+
import { loadTeamDefinition, validateTeamDefinition } from "../domains/topology/teams.js";
|
|
15
15
|
|
|
16
16
|
function loadValidTeam(repoRoot: string, teamName: string | undefined): { definition?: TeamDefinition; errors: string[] } {
|
|
17
17
|
const team = loadTeamDefinition(repoRoot, teamName ?? "zob-core");
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
|
|
3
|
-
import { buildZobLivePresenceSummary } from "../coms-v2/presence.js";
|
|
4
|
-
import { readZobComsV2Policy } from "../coms-v2/policy.js";
|
|
5
|
-
import { OrchestrateRunParams, ChainRunParams } from "
|
|
6
|
-
import { createSupervisedReadonlyDispatcher } from "../child-runner.js";
|
|
7
|
-
import { runOrchestrateRun } from "../orchestration/run.js";
|
|
8
|
-
import { runSupervisedReadonlyOrchestration } from "../orchestration/supervised-readonly.js";
|
|
9
|
-
import { runChainPlanOnly } from "../topology/chains.js";
|
|
10
|
-
import { sha256 } from "../utils/hashing.js";
|
|
11
|
-
import { isRecord } from "../utils/records.js";
|
|
3
|
+
import { buildZobLivePresenceSummary } from "../domains/coms/coms-v2/presence.js";
|
|
4
|
+
import { readZobComsV2Policy } from "../domains/coms/coms-v2/policy.js";
|
|
5
|
+
import { OrchestrateRunParams, ChainRunParams } from "./schemas.js";
|
|
6
|
+
import { createSupervisedReadonlyDispatcher } from "../domains/delegation/child-runner.js";
|
|
7
|
+
import { runOrchestrateRun } from "../domains/orchestration/run.js";
|
|
8
|
+
import { runSupervisedReadonlyOrchestration } from "../domains/orchestration/supervised-readonly.js";
|
|
9
|
+
import { runChainPlanOnly } from "../domains/topology/chains.js";
|
|
10
|
+
import { sha256 } from "../core/utils/hashing.js";
|
|
11
|
+
import { isRecord } from "../core/utils/records.js";
|
|
12
12
|
import type { HarnessRuntimeState } from "./state.js";
|
|
13
13
|
import { strictGoalSpecErrors } from "./state.js";
|
|
14
14
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
|
|
3
|
-
import { buildProjectDnaAgenticPlan, buildProjectDnaFederatedQueryResult, buildProjectDnaQueryResult, buildProjectDnaReadinessAudit, writeProjectDnaWritebackProposal } from "../project-dna.js";
|
|
4
|
-
import { ProjectDnaFederatedQueryParams, ProjectDnaPlanWorkflowParams, ProjectDnaQueryParams, ProjectDnaReadinessParams, ProjectDnaWritebackProposalParams } from "
|
|
3
|
+
import { buildProjectDnaAgenticPlan, buildProjectDnaFederatedQueryResult, buildProjectDnaQueryResult, buildProjectDnaReadinessAudit, writeProjectDnaWritebackProposal } from "../domains/project-dna/project-dna.js";
|
|
4
|
+
import { ProjectDnaFederatedQueryParams, ProjectDnaPlanWorkflowParams, ProjectDnaQueryParams, ProjectDnaReadinessParams, ProjectDnaWritebackProposalParams } from "./schemas.js";
|
|
5
5
|
|
|
6
6
|
export function registerProjectDnaTools(pi: ExtensionAPI): void {
|
|
7
7
|
pi.registerTool({
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
|
|
3
|
-
import { createWorkerPoolOwnerDecision, createWorkerPoolOwnerRequest, createWorkerPoolPlan, listWorkerPoolPlans, workerPoolBodyFreeViolations } from "../worker-pool.js";
|
|
4
|
-
import { WorkerPoolOwnerDecisionParams, WorkerPoolOwnerRequestParams, WorkerPoolPlanParams, WorkerPoolStatusParams } from "
|
|
5
|
-
import { loadTeamDefinition, validateTeamDefinition } from "../topology/teams.js";
|
|
3
|
+
import { createWorkerPoolOwnerDecision, createWorkerPoolOwnerRequest, createWorkerPoolPlan, listWorkerPoolPlans, workerPoolBodyFreeViolations } from "../domains/governance/worker-pool.js";
|
|
4
|
+
import { WorkerPoolOwnerDecisionParams, WorkerPoolOwnerRequestParams, WorkerPoolPlanParams, WorkerPoolStatusParams } from "./schemas.js";
|
|
5
|
+
import { loadTeamDefinition, validateTeamDefinition } from "../domains/topology/teams.js";
|
|
6
6
|
|
|
7
7
|
export function registerWorkerPoolTools(pi: ExtensionAPI): void {
|
|
8
8
|
pi.registerTool({
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
|
|
3
|
-
import { createWorkspaceClaim, listWorkspaceClaims, releaseWorkspaceClaim, workspaceClaimBodyFreeViolations } from "../workspace-claims.js";
|
|
4
|
-
import { WorkspaceClaimParams, WorkspaceClaimsListParams, WorkspaceReleaseParams } from "
|
|
5
|
-
import { loadTeamDefinition, validateTeamDefinition } from "../topology/teams.js";
|
|
3
|
+
import { createWorkspaceClaim, listWorkspaceClaims, releaseWorkspaceClaim, workspaceClaimBodyFreeViolations } from "../domains/governance/workspace-claims.js";
|
|
4
|
+
import { WorkspaceClaimParams, WorkspaceClaimsListParams, WorkspaceReleaseParams } from "./schemas.js";
|
|
5
|
+
import { loadTeamDefinition, validateTeamDefinition } from "../domains/topology/teams.js";
|
|
6
6
|
|
|
7
7
|
export function registerWorkspaceClaimTools(pi: ExtensionAPI): void {
|
|
8
8
|
pi.registerTool({
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
|
|
3
|
-
import { buildZcommitPlan, runGovernedZcommitCommit, runGovernedZcommitPush, type ZcommitCommandResult, type ZcommitPlan, type ZcommitPlanOptions } from "../git-ops.js";
|
|
4
|
-
import { ZcommitRunParams } from "
|
|
3
|
+
import { buildZcommitPlan, runGovernedZcommitCommit, runGovernedZcommitPush, type ZcommitCommandResult, type ZcommitPlan, type ZcommitPlanOptions } from "../domains/git/git-ops.js";
|
|
4
|
+
import { ZcommitRunParams } from "./schemas.js";
|
|
5
5
|
import type { HarnessRuntimeState } from "./state.js";
|
|
6
|
-
import { sha256 } from "../utils/hashing.js";
|
|
6
|
+
import { sha256 } from "../core/utils/hashing.js";
|
|
7
7
|
|
|
8
8
|
function uniqueSorted(values: string[]): string[] {
|
|
9
9
|
return [...new Set(values.filter((value) => value.trim().length > 0))].sort();
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
import { truncateToWidth, visibleWidth } from "@earendil-works/pi-tui";
|
|
3
3
|
|
|
4
|
-
import { MODE_TOOLS } from "../constants.js";
|
|
5
|
-
import { buildDaemonRuntimeState, buildDaemonTickPlan } from "../daemon-runtime.js";
|
|
6
|
-
import { goalTodoCompletionDiagnostics, summarizeGoalTodos } from "../goal-todos.js";
|
|
7
|
-
import { isRecord } from "../utils/records.js";
|
|
4
|
+
import { MODE_TOOLS } from "../core/constants.js";
|
|
5
|
+
import { buildDaemonRuntimeState, buildDaemonTickPlan } from "../domains/autonomy/daemon-runtime.js";
|
|
6
|
+
import { goalTodoCompletionDiagnostics, summarizeGoalTodos } from "../domains/goal/goal-todos.js";
|
|
7
|
+
import { isRecord } from "../core/utils/records.js";
|
|
8
8
|
import type { AssistantLikeMessage, ModeName } from "../types.js";
|
|
9
|
-
import { readHarnessReadinessWidgetData } from "../orchestration/widget-readers.js";
|
|
10
|
-
import { buildZpeerPeerRoomSummaries, type ZpeerPeerRoomSummary } from "../coms-v2/zpeer.js";
|
|
9
|
+
import { readHarnessReadinessWidgetData } from "../domains/orchestration/widget-readers.js";
|
|
10
|
+
import { buildZpeerPeerRoomSummaries, type ZpeerPeerRoomSummary } from "../domains/coms/coms-v2/zpeer.js";
|
|
11
11
|
import { delegationCost, delegationDurationMs, formatDelegationCost, formatDuration, summarizeDelegations } from "./delegation-monitor.js";
|
|
12
12
|
import { disposeDelegationMouseSupport } from "./delegation-mouse.js";
|
|
13
13
|
import { formatZcompactHudLine } from "./auto-compaction.js";
|
|
@@ -353,8 +353,8 @@ export function renderHarnessWidget(pi: ExtensionAPI, state: HarnessRuntimeState
|
|
|
353
353
|
const marker = summary.active ? "*" : " ";
|
|
354
354
|
const selfAlias = `@${summary.selfAlias ?? "?"}`;
|
|
355
355
|
const peerState = `${summary.online}/${summary.peerCount}${summary.stale > 0 ? ` s${summary.stale}` : ""}${summary.offline > 0 ? ` off${summary.offline}` : ""}`;
|
|
356
|
-
const peerAliases = summary.
|
|
357
|
-
const aliasOverflow = Math.max(0, summary.
|
|
356
|
+
const peerAliases = summary.onlineAliases.filter((alias) => alias !== summary.selfAlias).slice(0, 2).map((alias) => `@${alias}`);
|
|
357
|
+
const aliasOverflow = Math.max(0, summary.onlineAliases.length - (summary.selfAlias && summary.onlineAliases.includes(summary.selfAlias) ? 1 : 0) - peerAliases.length);
|
|
358
358
|
const aliasText = peerAliases.length > 0 ? `${peerAliases.join(" ")}${aliasOverflow > 0 ? ` +${aliasOverflow}` : ""}` : "no peers";
|
|
359
359
|
return theme.fg("muted", truncateToWidth(`${marker} ${summary.roomId} ${selfAlias} ${peerState} ${aliasText}`, 52, "…"));
|
|
360
360
|
});
|
|
@@ -427,10 +427,27 @@ export function renderHarnessWidget(pi: ExtensionAPI, state: HarnessRuntimeState
|
|
|
427
427
|
});
|
|
428
428
|
}
|
|
429
429
|
|
|
430
|
+
type PiToolInfo = ReturnType<ExtensionAPI["getAllTools"]>[number];
|
|
431
|
+
|
|
432
|
+
function isZobInternalTool(tool: PiToolInfo): boolean {
|
|
433
|
+
const path = tool.sourceInfo.path.replace(/\\/g, "/");
|
|
434
|
+
return path.includes("/.pi/extensions/zob-harness/") || path.includes("/.pi/extensions/zob-switch/");
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
function isExternalPackageTool(tool: PiToolInfo): boolean {
|
|
438
|
+
return tool.sourceInfo.source !== "builtin" && tool.sourceInfo.source !== "sdk" && !isZobInternalTool(tool);
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
function uniqueToolNames(names: string[]): string[] {
|
|
442
|
+
return [...new Set(names)];
|
|
443
|
+
}
|
|
444
|
+
|
|
430
445
|
export function applyMode(pi: ExtensionAPI, state: HarnessRuntimeState, ctx: ExtensionContext, mode: ModeName, persist = true): void {
|
|
431
446
|
state.activeMode = mode;
|
|
432
|
-
const
|
|
433
|
-
const
|
|
447
|
+
const allTools = pi.getAllTools();
|
|
448
|
+
const available = new Set(allTools.map((tool) => tool.name));
|
|
449
|
+
const externalPackageTools = allTools.filter(isExternalPackageTool).map((tool) => tool.name);
|
|
450
|
+
const activeTools = mode === "vanilla" ? [...available] : uniqueToolNames([...MODE_TOOLS[mode].filter((tool) => available.has(tool)), ...externalPackageTools]);
|
|
434
451
|
pi.setActiveTools(activeTools);
|
|
435
452
|
if (persist) pi.appendEntry("zob-mode-state", { mode, timestamp: new Date().toISOString() });
|
|
436
453
|
ctx.ui.setStatus("zob-mode", ctx.ui.theme.fg("accent", `zob:${mode}`));
|
|
@@ -12,7 +12,7 @@ import { registerMissionControlTools } from "./tools-mission-control.js";
|
|
|
12
12
|
import { registerFactoryTools } from "./tools-factory.js";
|
|
13
13
|
import { registerProjectDnaTools } from "./tools-project-dna.js";
|
|
14
14
|
import { registerOrchestrationTools } from "./tools-orchestration.js";
|
|
15
|
-
import { registerGoalRuntimeEvents, registerGoalRuntimeTools } from "
|
|
15
|
+
import { registerGoalRuntimeEvents, registerGoalRuntimeTools } from "./goal-runtime.js";
|
|
16
16
|
import { registerGoalRoomTools } from "./tools-goal-room.js";
|
|
17
17
|
import { registerGovernedRequestTools } from "./tools-governed-requests.js";
|
|
18
18
|
import { registerWorkspaceClaimTools } from "./tools-workspace-claims.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ChildChangedPathRef, ModeName } from "./types/core.js";
|
|
1
|
+
import type { ChildChangedPathRef, ModeName } from "./core/types/core.js";
|
|
2
2
|
|
|
3
3
|
export type {
|
|
4
4
|
AgentScope,
|
|
@@ -9,7 +9,7 @@ export type {
|
|
|
9
9
|
JsonEvent,
|
|
10
10
|
ModeName,
|
|
11
11
|
TextBlock,
|
|
12
|
-
} from "./types/core.js";
|
|
12
|
+
} from "./core/types/core.js";
|
|
13
13
|
|
|
14
14
|
export interface DamageRule {
|
|
15
15
|
pattern: string;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# zob-switch Extension Guardrails
|
|
2
|
+
|
|
3
|
+
- This folder owns the `/zob` Pi switch extension only.
|
|
4
|
+
- Keep `.pi/extensions/zob-switch/index.ts` as the stable Pi entrypoint and preserve its default export.
|
|
5
|
+
- Split-only refactors are allowed; do not change `/zob` behavior, command registration, aliases/autocomplete behavior, messages, settings paths, snapshot paths, schemas, defaults, or sync/async behavior.
|
|
6
|
+
- Use NodeNext relative imports with `.js` suffix.
|
|
7
|
+
- Use `import type` for type-only imports.
|
|
8
|
+
- No file under `src/` may import from `index.ts`.
|
|
9
|
+
- Do not touch secrets, generated/vendor folders, logs, sessions, reports, or unrelated extensions from this package.
|
|
@@ -1,134 +1,22 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
|
-
import {
|
|
3
|
-
import { dirname, join } from "node:path";
|
|
2
|
+
import { join } from "node:path";
|
|
4
3
|
|
|
5
4
|
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
6
|
-
import type { AutocompleteItem } from "@earendil-works/pi-tui";
|
|
7
5
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
type JsonObject = Record<string, unknown>;
|
|
16
|
-
|
|
17
|
-
type Snapshot = {
|
|
18
|
-
schema: "zob.harness-switch.settings-snapshot.v1";
|
|
19
|
-
savedAt: string;
|
|
20
|
-
settings: JsonObject;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
function isObject(value: unknown): value is JsonObject {
|
|
24
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
function asStringArray(value: unknown): string[] {
|
|
28
|
-
return Array.isArray(value) ? value.filter((entry): entry is string => typeof entry === "string") : [];
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function uniqueWithRequiredFirst(values: string[], requiredFirst: string[]): string[] {
|
|
32
|
-
const result: string[] = [];
|
|
33
|
-
for (const value of [...requiredFirst, ...values]) {
|
|
34
|
-
if (!result.includes(value)) result.push(value);
|
|
35
|
-
}
|
|
36
|
-
return result;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
function withoutValues(values: string[], remove: string[]): string[] {
|
|
40
|
-
return values.filter((value) => !remove.includes(value));
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
function hasValue(settings: JsonObject, key: "extensions" | "prompts" | "skills", value: string): boolean {
|
|
44
|
-
return asStringArray(settings[key]).includes(value);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
async function readSettings(cwd: string): Promise<JsonObject> {
|
|
48
|
-
const raw = await readFile(join(cwd, SETTINGS_PATH), "utf8");
|
|
49
|
-
const parsed = JSON.parse(raw) as unknown;
|
|
50
|
-
if (!isObject(parsed)) throw new Error(`${SETTINGS_PATH} must contain a JSON object`);
|
|
51
|
-
return parsed;
|
|
52
|
-
}
|
|
6
|
+
import { argumentCompletions } from "./src/autocomplete.js";
|
|
7
|
+
import { HARNESS_EXTENSION, SETTINGS_PATH } from "./src/paths.js";
|
|
8
|
+
import { readSettings, writeSettings } from "./src/settings.js";
|
|
9
|
+
import type { JsonObject } from "./src/settings.js";
|
|
10
|
+
import { readSnapshot, writeSnapshot } from "./src/snapshot.js";
|
|
11
|
+
import type { Snapshot } from "./src/snapshot.js";
|
|
12
|
+
import { buildOffSettings, buildOnSettings, hasValue, statusFor } from "./src/state.js";
|
|
53
13
|
|
|
54
|
-
|
|
55
|
-
await writeFile(join(cwd, SETTINGS_PATH), `${JSON.stringify(settings, null, 2)}\n`, "utf8");
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
async function writeSnapshot(cwd: string, settings: JsonObject): Promise<void> {
|
|
59
|
-
const snapshot: Snapshot = {
|
|
60
|
-
schema: "zob.harness-switch.settings-snapshot.v1",
|
|
61
|
-
savedAt: new Date().toISOString(),
|
|
62
|
-
settings,
|
|
63
|
-
};
|
|
64
|
-
const snapshotPath = join(cwd, SNAPSHOT_PATH);
|
|
65
|
-
await mkdir(dirname(snapshotPath), { recursive: true });
|
|
66
|
-
await writeFile(snapshotPath, `${JSON.stringify(snapshot, null, 2)}\n`, "utf8");
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
async function readSnapshot(cwd: string): Promise<Snapshot | null> {
|
|
70
|
-
const snapshotPath = join(cwd, SNAPSHOT_PATH);
|
|
71
|
-
if (!existsSync(snapshotPath)) return null;
|
|
72
|
-
const parsed = JSON.parse(await readFile(snapshotPath, "utf8")) as unknown;
|
|
73
|
-
if (!isObject(parsed) || parsed.schema !== "zob.harness-switch.settings-snapshot.v1" || !isObject(parsed.settings)) {
|
|
74
|
-
throw new Error(`${SNAPSHOT_PATH} is not a valid ZOB switch snapshot`);
|
|
75
|
-
}
|
|
76
|
-
return parsed as Snapshot;
|
|
77
|
-
}
|
|
14
|
+
const SNAPSHOT_PATH = join(".pi", "tmp", "zob-switch", "settings-snapshot.json");
|
|
78
15
|
|
|
79
16
|
function shouldWriteOffSnapshot(current: JsonObject, snapshot: Snapshot | null): boolean {
|
|
80
17
|
return snapshot === null || hasValue(current, "extensions", HARNESS_EXTENSION);
|
|
81
18
|
}
|
|
82
19
|
|
|
83
|
-
function buildOffSettings(current: JsonObject): JsonObject {
|
|
84
|
-
return {
|
|
85
|
-
...current,
|
|
86
|
-
extensions: uniqueWithRequiredFirst(withoutValues(asStringArray(current.extensions), [HARNESS_EXTENSION]), [SWITCH_EXTENSION]),
|
|
87
|
-
prompts: withoutValues(asStringArray(current.prompts), [ZOB_PROMPTS]),
|
|
88
|
-
skills: withoutValues(asStringArray(current.skills), [ZOB_SKILLS]),
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
function buildOnSettings(base: JsonObject, usedSnapshot: boolean): JsonObject {
|
|
93
|
-
return {
|
|
94
|
-
...base,
|
|
95
|
-
extensions: uniqueWithRequiredFirst(asStringArray(base.extensions), [SWITCH_EXTENSION, HARNESS_EXTENSION]),
|
|
96
|
-
prompts: usedSnapshot ? asStringArray(base.prompts) : uniqueWithRequiredFirst(asStringArray(base.prompts), [ZOB_PROMPTS]),
|
|
97
|
-
skills: usedSnapshot ? asStringArray(base.skills) : uniqueWithRequiredFirst(asStringArray(base.skills), [ZOB_SKILLS]),
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
function statusFor(settings: JsonObject, snapshotPresent: boolean): string {
|
|
102
|
-
const switchConfigured = hasValue(settings, "extensions", SWITCH_EXTENSION);
|
|
103
|
-
const harnessConfigured = hasValue(settings, "extensions", HARNESS_EXTENSION);
|
|
104
|
-
const promptsConfigured = hasValue(settings, "prompts", ZOB_PROMPTS);
|
|
105
|
-
const skillsConfigured = hasValue(settings, "skills", ZOB_SKILLS);
|
|
106
|
-
const state = switchConfigured && harnessConfigured && promptsConfigured && skillsConfigured
|
|
107
|
-
? "on"
|
|
108
|
-
: switchConfigured && !harnessConfigured && !promptsConfigured && !skillsConfigured
|
|
109
|
-
? "off"
|
|
110
|
-
: "partial";
|
|
111
|
-
return [
|
|
112
|
-
`ZOB Harness switch: ${state}`,
|
|
113
|
-
`switch extension: ${switchConfigured ? "configured" : "missing"}`,
|
|
114
|
-
`harness extension: ${harnessConfigured ? "configured" : "missing"}`,
|
|
115
|
-
`prompts: ${promptsConfigured ? "configured" : "missing"}`,
|
|
116
|
-
`skills: ${skillsConfigured ? "configured" : "missing"}`,
|
|
117
|
-
`snapshot: ${snapshotPresent ? "present" : "missing"}`,
|
|
118
|
-
].join("\n");
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
function argumentCompletions(prefix: string): AutocompleteItem[] | null {
|
|
122
|
-
const query = prefix.trim().toLowerCase();
|
|
123
|
-
const items: AutocompleteItem[] = [
|
|
124
|
-
{ value: "on", label: "on", description: "restore ZOB Harness from snapshot/defaults and reload" },
|
|
125
|
-
{ value: "off", label: "off", description: "snapshot settings, unload ZOB Harness resources, and reload" },
|
|
126
|
-
{ value: "status", label: "status", description: "show switch/harness/prompts/skills/snapshot state" },
|
|
127
|
-
];
|
|
128
|
-
const filtered = query ? items.filter((item) => item.value.startsWith(query)) : items;
|
|
129
|
-
return filtered.length > 0 ? filtered : null;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
20
|
export default function zobSwitch(pi: ExtensionAPI): void {
|
|
133
21
|
pi.registerCommand("zob", {
|
|
134
22
|
description: "Switch ZOB Harness on/off or show status: /zob on|off|status",
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# zob-switch src Guardrails
|
|
2
|
+
|
|
3
|
+
- Modules here are sidecars for `.pi/extensions/zob-switch/index.ts`.
|
|
4
|
+
- Move code only; do not rewrite logic, optimize, reorder behavior, rename helpers for behavior changes, or alter strings/schemas/paths.
|
|
5
|
+
- Preserve `/zob` command behavior exactly, including settings and snapshot semantics.
|
|
6
|
+
- Use NodeNext relative imports with `.js` suffix.
|
|
7
|
+
- Use `import type` for type-only imports.
|
|
8
|
+
- Never import from `../index.ts` or any `index.ts` entrypoint.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AutocompleteItem } from "@earendil-works/pi-tui";
|
|
2
|
+
|
|
3
|
+
export function argumentCompletions(prefix: string): AutocompleteItem[] | null {
|
|
4
|
+
const query = prefix.trim().toLowerCase();
|
|
5
|
+
const items: AutocompleteItem[] = [
|
|
6
|
+
{ value: "on", label: "on", description: "restore ZOB Harness from snapshot/defaults and reload" },
|
|
7
|
+
{ value: "off", label: "off", description: "snapshot settings, unload ZOB Harness resources, and reload" },
|
|
8
|
+
{ value: "status", label: "status", description: "show switch/harness/prompts/skills/snapshot state" },
|
|
9
|
+
];
|
|
10
|
+
const filtered = query ? items.filter((item) => item.value.startsWith(query)) : items;
|
|
11
|
+
return filtered.length > 0 ? filtered : null;
|
|
12
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
|
|
3
|
+
export const SETTINGS_PATH = join(".pi", "settings.json");
|
|
4
|
+
export const SNAPSHOT_PATH = join(".pi", "tmp", "zob-switch", "settings-snapshot.json");
|
|
5
|
+
export const SWITCH_EXTENSION = "extensions/zob-switch/index.ts";
|
|
6
|
+
export const HARNESS_EXTENSION = "extensions/zob-harness/index.ts";
|
|
7
|
+
export const ZOB_PROMPTS = "prompts";
|
|
8
|
+
export const ZOB_SKILLS = "skills";
|