@stravica-ai/digital-operator-pa 0.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.
- package/LICENSE +21 -0
- package/README.md +170 -0
- package/bin/desk +9 -0
- package/bin/distill +2 -0
- package/bin/estate-sync +2 -0
- package/bin/launch +2 -0
- package/bin/memory-sync +2 -0
- package/bin/migrate-inspect +2 -0
- package/bin/pa +2 -0
- package/bin/pa-coordinator-hook +2 -0
- package/bin/pa-init +2 -0
- package/bin/research +2 -0
- package/bin/scheduler +2 -0
- package/bin/secrets +2 -0
- package/bin/slice +2 -0
- package/bin/smoke +9 -0
- package/bin/sync +2 -0
- package/dist/engineering-pa-cli/README.md +205 -0
- package/dist/engineering-pa-cli/bin/estate-sync +2 -0
- package/dist/engineering-pa-cli/bin/launch +2 -0
- package/dist/engineering-pa-cli/bin/pa +2 -0
- package/dist/engineering-pa-cli/bin/pa-coordinator-hook +12 -0
- package/dist/engineering-pa-cli/bin/research +2 -0
- package/dist/engineering-pa-cli/bin/scheduler +2 -0
- package/dist/engineering-pa-cli/bin/secrets +2 -0
- package/dist/engineering-pa-cli/bin/smoke +9 -0
- package/dist/engineering-pa-cli/bin/sync +2 -0
- package/dist/engineering-pa-cli/config/coordinator-allowlist.json +118 -0
- package/dist/engineering-pa-cli/docs/coordinator-hook.md +211 -0
- package/dist/engineering-pa-cli/docs/estate-sync.md +412 -0
- package/dist/engineering-pa-cli/docs/gsc.md +175 -0
- package/dist/engineering-pa-cli/docs/lint-linkedin.md +139 -0
- package/dist/engineering-pa-cli/docs/secrets.md +221 -0
- package/dist/engineering-pa-cli/docs/smoke.md +113 -0
- package/dist/engineering-pa-cli/docs/staging-alias.md +114 -0
- package/dist/engineering-pa-cli/index.mjs +17 -0
- package/dist/engineering-pa-cli/package.json +37 -0
- package/dist/engineering-pa-cli/src/autonomy/cli.mjs +329 -0
- package/dist/engineering-pa-cli/src/autonomy/envelope.mjs +301 -0
- package/dist/engineering-pa-cli/src/coordinator-hook/cli.mjs +140 -0
- package/dist/engineering-pa-cli/src/coordinator-hook/config.mjs +134 -0
- package/dist/engineering-pa-cli/src/coordinator-hook/message.mjs +47 -0
- package/dist/engineering-pa-cli/src/coordinator-hook/policy.mjs +211 -0
- package/dist/engineering-pa-cli/src/coordinator-hook/repo-root.mjs +44 -0
- package/dist/engineering-pa-cli/src/coordinator-hook/self.mjs +30 -0
- package/dist/engineering-pa-cli/src/environment/cli.mjs +287 -0
- package/dist/engineering-pa-cli/src/environment/probes.mjs +302 -0
- package/dist/engineering-pa-cli/src/gsc/auth.mjs +148 -0
- package/dist/engineering-pa-cli/src/gsc/cli.mjs +93 -0
- package/dist/engineering-pa-cli/src/gsc/cloudflare.mjs +318 -0
- package/dist/engineering-pa-cli/src/gsc/commands/add-property.mjs +70 -0
- package/dist/engineering-pa-cli/src/gsc/commands/list-properties.mjs +33 -0
- package/dist/engineering-pa-cli/src/gsc/commands/pull-analytics.mjs +130 -0
- package/dist/engineering-pa-cli/src/gsc/commands/submit-sitemap.mjs +41 -0
- package/dist/engineering-pa-cli/src/gsc/commands/verify-via-cf-dns.mjs +189 -0
- package/dist/engineering-pa-cli/src/knowledge/call-log.mjs +59 -0
- package/dist/engineering-pa-cli/src/knowledge/cli.mjs +242 -0
- package/dist/engineering-pa-cli/src/knowledge/eval.mjs +446 -0
- package/dist/engineering-pa-cli/src/knowledge/formatters.mjs +331 -0
- package/dist/engineering-pa-cli/src/knowledge/graph.mjs +710 -0
- package/dist/engineering-pa-cli/src/launch/README.md +214 -0
- package/dist/engineering-pa-cli/src/launch/cli.mjs +51 -0
- package/dist/engineering-pa-cli/src/launch/commands/launch.mjs +106 -0
- package/dist/engineering-pa-cli/src/launch/identity.mjs +43 -0
- package/dist/engineering-pa-cli/src/launch/planner.mjs +44 -0
- package/dist/engineering-pa-cli/src/launch/repo-root.mjs +53 -0
- package/dist/engineering-pa-cli/src/launch/runner.mjs +147 -0
- package/dist/engineering-pa-cli/src/launch/task-loader.mjs +85 -0
- package/dist/engineering-pa-cli/src/lint/cli.mjs +61 -0
- package/dist/engineering-pa-cli/src/lint/commands/linkedin.mjs +133 -0
- package/dist/engineering-pa-cli/src/lint/detectors.mjs +90 -0
- package/dist/engineering-pa-cli/src/lint/linter.mjs +69 -0
- package/dist/engineering-pa-cli/src/lint/reporter.mjs +32 -0
- package/dist/engineering-pa-cli/src/lint/rules.mjs +132 -0
- package/dist/engineering-pa-cli/src/pa/cli.mjs +369 -0
- package/dist/engineering-pa-cli/src/pa/doc-groups.mjs +164 -0
- package/dist/engineering-pa-cli/src/pa/io.mjs +80 -0
- package/dist/engineering-pa-cli/src/pa/project-cli.mjs +385 -0
- package/dist/engineering-pa-cli/src/pa/projects.mjs +352 -0
- package/dist/engineering-pa-cli/src/pa/repo-root.mjs +64 -0
- package/dist/engineering-pa-cli/src/pa/session.mjs +254 -0
- package/dist/engineering-pa-cli/src/pa/work-cli.mjs +164 -0
- package/dist/engineering-pa-cli/src/pa/work.mjs +196 -0
- package/dist/engineering-pa-cli/src/pa/workstreams.mjs +201 -0
- package/dist/engineering-pa-cli/src/research/README.md +360 -0
- package/dist/engineering-pa-cli/src/research/briefs/extractor.md +103 -0
- package/dist/engineering-pa-cli/src/research/briefs/searcher.md +113 -0
- package/dist/engineering-pa-cli/src/research/briefs/synthesizer.md +124 -0
- package/dist/engineering-pa-cli/src/research/briefs/verifier.md +86 -0
- package/dist/engineering-pa-cli/src/research/cli.mjs +141 -0
- package/dist/engineering-pa-cli/src/research/commands/gates.mjs +176 -0
- package/dist/engineering-pa-cli/src/research/commands/list.mjs +56 -0
- package/dist/engineering-pa-cli/src/research/commands/mark.mjs +97 -0
- package/dist/engineering-pa-cli/src/research/commands/paths.mjs +69 -0
- package/dist/engineering-pa-cli/src/research/commands/prune.mjs +86 -0
- package/dist/engineering-pa-cli/src/research/commands/run.mjs +94 -0
- package/dist/engineering-pa-cli/src/research/commands/show.mjs +43 -0
- package/dist/engineering-pa-cli/src/research/docs/operator-present-flow.md +120 -0
- package/dist/engineering-pa-cli/src/research/format.mjs +59 -0
- package/dist/engineering-pa-cli/src/research/promote.mjs +260 -0
- package/dist/engineering-pa-cli/src/research/schema/finding.schema.json +55 -0
- package/dist/engineering-pa-cli/src/research/schema/gates.schema.json +34 -0
- package/dist/engineering-pa-cli/src/research/schema/manifest.schema.json +59 -0
- package/dist/engineering-pa-cli/src/research/schema/plan.schema.json +41 -0
- package/dist/engineering-pa-cli/src/research/schema/sources.schema.json +31 -0
- package/dist/engineering-pa-cli/src/research/store/findings.mjs +61 -0
- package/dist/engineering-pa-cli/src/research/store/gates.mjs +73 -0
- package/dist/engineering-pa-cli/src/research/store/index.mjs +312 -0
- package/dist/engineering-pa-cli/src/research/store/manifest.mjs +56 -0
- package/dist/engineering-pa-cli/src/research/store/plan.mjs +59 -0
- package/dist/engineering-pa-cli/src/research/store/sources.mjs +44 -0
- package/dist/engineering-pa-cli/src/research/store/validate.mjs +92 -0
- package/dist/engineering-pa-cli/src/research/workflows/research-normal.js +573 -0
- package/dist/engineering-pa-cli/src/scheduler/cli.mjs +197 -0
- package/dist/engineering-pa-cli/src/secrets/cli.mjs +254 -0
- package/dist/engineering-pa-cli/src/secrets/commands/backup-template.mjs +67 -0
- package/dist/engineering-pa-cli/src/secrets/commands/backup.mjs +85 -0
- package/dist/engineering-pa-cli/src/secrets/commands/delete.mjs +58 -0
- package/dist/engineering-pa-cli/src/secrets/commands/find.mjs +36 -0
- package/dist/engineering-pa-cli/src/secrets/commands/get.mjs +49 -0
- package/dist/engineering-pa-cli/src/secrets/commands/init.mjs +69 -0
- package/dist/engineering-pa-cli/src/secrets/commands/list.mjs +37 -0
- package/dist/engineering-pa-cli/src/secrets/commands/rotate.mjs +46 -0
- package/dist/engineering-pa-cli/src/secrets/commands/set.mjs +123 -0
- package/dist/engineering-pa-cli/src/secrets/commands/status.mjs +146 -0
- package/dist/engineering-pa-cli/src/secrets/commands/vaults.mjs +57 -0
- package/dist/engineering-pa-cli/src/secrets/commands/verify.mjs +143 -0
- package/dist/engineering-pa-cli/src/secrets/vault.mjs +766 -0
- package/dist/engineering-pa-cli/src/smoke/checks.mjs +199 -0
- package/dist/engineering-pa-cli/src/smoke/cli.mjs +108 -0
- package/dist/engineering-pa-cli/src/smoke/commands/run.mjs +237 -0
- package/dist/engineering-pa-cli/src/smoke/runner.mjs +191 -0
- package/dist/engineering-pa-cli/src/staging-alias/cli.mjs +91 -0
- package/dist/engineering-pa-cli/src/staging-alias/cloudflare.mjs +380 -0
- package/dist/engineering-pa-cli/src/staging-alias/commands/list.mjs +36 -0
- package/dist/engineering-pa-cli/src/staging-alias/commands/set.mjs +188 -0
- package/dist/engineering-pa-cli/src/staging-alias/commands/status.mjs +113 -0
- package/dist/engineering-pa-cli/src/staging-alias/commands/unset.mjs +95 -0
- package/dist/engineering-pa-cli/src/staging-alias/sites.mjs +105 -0
- package/dist/engineering-pa-cli/src/sync/cli.mjs +151 -0
- package/dist/engineering-pa-cli/src/sync/git.mjs +149 -0
- package/dist/engineering-pa-cli/src/sync/lock.mjs +30 -0
- package/dist/engineering-pa-cli/src/sync/regenerated-artifacts.mjs +114 -0
- package/dist/engineering-pa-cli/src/sync/registry-scope.mjs +260 -0
- package/dist/engineering-pa-cli/src/sync/run.mjs +531 -0
- package/dist/engineering-pa-cli/src/sync/runner.mjs +62 -0
- package/dist/engineering-pa-cli/src/sync/runs-digest.mjs +138 -0
- package/dist/engineering-pa-core/README.md +60 -0
- package/dist/engineering-pa-core/bin/desk +9 -0
- package/dist/engineering-pa-core/bin/distill +2 -0
- package/dist/engineering-pa-core/bin/memory-sync +2 -0
- package/dist/engineering-pa-core/bin/slice +2 -0
- package/dist/engineering-pa-core/docs/autonomy-envelope-tracker.md +111 -0
- package/dist/engineering-pa-core/docs/blueprints/README.md +45 -0
- package/dist/engineering-pa-core/docs/blueprints/docker-services/blueprint.md +168 -0
- package/dist/engineering-pa-core/docs/blueprints/git-identity/blueprint.md +116 -0
- package/dist/engineering-pa-core/docs/blueprints/ideas/custom-workspace-views.md +9 -0
- package/dist/engineering-pa-core/docs/blueprints/ideas/knowledge-domain-patterns.md +15 -0
- package/dist/engineering-pa-core/docs/blueprints/ideas/office-integration.md +11 -0
- package/dist/engineering-pa-core/docs/blueprints/ideas/team-scaling.md +9 -0
- package/dist/engineering-pa-core/docs/blueprints/ideas/work-personal-separation.md +9 -0
- package/dist/engineering-pa-core/docs/blueprints/scheduled-distillation/blueprint.md +129 -0
- package/dist/engineering-pa-core/docs/blueprints/tool-integration/blueprint.md +110 -0
- package/dist/engineering-pa-core/docs/commands/init.md +159 -0
- package/dist/engineering-pa-core/docs/commands/schedule.md +98 -0
- package/dist/engineering-pa-core/docs/commands/upgrade.md +67 -0
- package/dist/engineering-pa-core/docs/entity-location-map.md +93 -0
- package/dist/engineering-pa-core/docs/knowledge-scaffold.md +121 -0
- package/dist/engineering-pa-core/docs/lock.md +155 -0
- package/dist/engineering-pa-core/docs/memory-sync.md +28 -0
- package/dist/engineering-pa-core/docs/pa-operating-model.md +457 -0
- package/dist/engineering-pa-core/docs/scheduling.md +35 -0
- package/dist/engineering-pa-core/docs/standards/README.md +24 -0
- package/dist/engineering-pa-core/docs/standards/briefing-contract.md +161 -0
- package/dist/engineering-pa-core/docs/standards/tooling.md +240 -0
- package/dist/engineering-pa-core/docs/tools/distill.md +230 -0
- package/dist/engineering-pa-core/docs/tools/memory-sync.md +98 -0
- package/dist/engineering-pa-core/docs/tools/scheduler.md +243 -0
- package/dist/engineering-pa-core/docs/tools/slice.md +150 -0
- package/dist/engineering-pa-core/docs/upstream-issue-filing.md +88 -0
- package/dist/engineering-pa-core/docs/working-directory.md +29 -0
- package/dist/engineering-pa-core/docs/workspace-operations.md +46 -0
- package/dist/engineering-pa-core/index.mjs +21 -0
- package/dist/engineering-pa-core/knowledge/README.md +53 -0
- package/dist/engineering-pa-core/knowledge/canonical/.gitkeep +0 -0
- package/dist/engineering-pa-core/knowledge/content-voice/README.md +64 -0
- package/dist/engineering-pa-core/knowledge/content-voice/banned-ai-tells-baseline.md +133 -0
- package/dist/engineering-pa-core/knowledge/content-voice/banned-ai-tells-shape.md +58 -0
- package/dist/engineering-pa-core/knowledge/content-voice/banned-ai-tells-taxonomy.md +33 -0
- package/dist/engineering-pa-core/knowledge/content-voice/content-pipeline-routing.md +58 -0
- package/dist/engineering-pa-core/knowledge/content-voice/new-tell-capture-procedure.md +40 -0
- package/dist/engineering-pa-core/knowledge/content-voice/voice-guide-shape.md +43 -0
- package/dist/engineering-pa-core/knowledge/delegation-dispatch/README.md +34 -0
- package/dist/engineering-pa-core/knowledge/delegation-dispatch/briefing-contract.md +77 -0
- package/dist/engineering-pa-core/knowledge/delegation-dispatch/delegation-modes.md +84 -0
- package/dist/engineering-pa-core/knowledge/delegation-dispatch/dispatch-envelope.md +238 -0
- package/dist/engineering-pa-core/knowledge/delegation-dispatch/task-groups-and-orchestrators.md +62 -0
- package/dist/engineering-pa-core/knowledge/delegation-dispatch/team-improvement-loop.md +48 -0
- package/dist/engineering-pa-core/knowledge/delegation-dispatch/tool-development-policy.md +48 -0
- package/dist/engineering-pa-core/knowledge/engineering-discipline/README.md +33 -0
- package/dist/engineering-pa-core/knowledge/engineering-discipline/blast-radius-and-safety.md +50 -0
- package/dist/engineering-pa-core/knowledge/engineering-discipline/investigate-root-causes.md +48 -0
- package/dist/engineering-pa-core/knowledge/engineering-discipline/role-ladder.md +57 -0
- package/dist/engineering-pa-core/knowledge/engineering-discipline/verify-runtime-behaviour.md +53 -0
- package/dist/engineering-pa-core/knowledge/engineering-discipline/worktree-isolation.md +50 -0
- package/dist/engineering-pa-core/knowledge/knowledge-memory/README.md +33 -0
- package/dist/engineering-pa-core/knowledge/knowledge-memory/claude-md-hygiene.md +47 -0
- package/dist/engineering-pa-core/knowledge/knowledge-memory/journal-and-self-improvement.md +53 -0
- package/dist/engineering-pa-core/knowledge/knowledge-memory/knowledge-retrieval-discipline.md +62 -0
- package/dist/engineering-pa-core/knowledge/knowledge-memory/librarian-synthesis-mandate.md +56 -0
- package/dist/engineering-pa-core/knowledge/knowledge-memory/staging-and-observations.md +58 -0
- package/dist/engineering-pa-core/knowledge/operator-interface/README.md +32 -0
- package/dist/engineering-pa-core/knowledge/operator-interface/communication-style.md +33 -0
- package/dist/engineering-pa-core/knowledge/operator-interface/escalation-and-correction.md +45 -0
- package/dist/engineering-pa-core/knowledge/operator-interface/push-back-discipline.md +42 -0
- package/dist/engineering-pa-core/knowledge/operator-interface/session-boot-and-end.md +56 -0
- package/dist/engineering-pa-core/knowledge/platform-tooling/README.md +37 -0
- package/dist/engineering-pa-core/knowledge/platform-tooling/desk-cli-reference.md +52 -0
- package/dist/engineering-pa-core/knowledge/platform-tooling/environment-awareness.md +91 -0
- package/dist/engineering-pa-core/knowledge/platform-tooling/mcp-servers-catalogue.md +52 -0
- package/dist/engineering-pa-core/knowledge/platform-tooling/pa-cli-reference.md +55 -0
- package/dist/engineering-pa-core/knowledge/platform-tooling/scheduling-and-launchd.md +56 -0
- package/dist/engineering-pa-core/knowledge/platform-tooling/tool-discovery-discipline.md +49 -0
- package/dist/engineering-pa-core/knowledge/platform-tooling/working-directory-vs-project-root.md +43 -0
- package/dist/engineering-pa-core/knowledge/platform-tooling/workspace-server.md +51 -0
- package/dist/engineering-pa-core/knowledge/raw/.gitkeep +0 -0
- package/dist/engineering-pa-core/knowledge/scaffold/domains.json +5 -0
- package/dist/engineering-pa-core/knowledge/schema/.gitkeep +0 -0
- package/dist/engineering-pa-core/knowledge/work-management/README.md +33 -0
- package/dist/engineering-pa-core/knowledge/work-management/desk-cli.md +84 -0
- package/dist/engineering-pa-core/knowledge/work-management/progress-md.md +48 -0
- package/dist/engineering-pa-core/knowledge/work-management/projects.md +64 -0
- package/dist/engineering-pa-core/knowledge/work-management/spawn-log.md +48 -0
- package/dist/engineering-pa-core/knowledge/work-management/work-items.md +67 -0
- package/dist/engineering-pa-core/package.json +26 -0
- package/dist/engineering-pa-core/roles/agent-ops/definition.md +79 -0
- package/dist/engineering-pa-core/roles/dispatch-briefer/definition.md +195 -0
- package/dist/engineering-pa-core/roles/librarian/definition.md +176 -0
- package/dist/engineering-pa-core/roles/pa/definition.md +93 -0
- package/dist/engineering-pa-core/roles/system-admin/definition.md +106 -0
- package/dist/engineering-pa-core/roles/tool-developer/definition.md +116 -0
- package/dist/engineering-pa-core/roles/writer/definition.md +130 -0
- package/dist/engineering-pa-core/schema/autonomy-envelope.schema.json +61 -0
- package/dist/engineering-pa-core/schema/project.json +114 -0
- package/dist/engineering-pa-core/schema/schedule.json +63 -0
- package/dist/engineering-pa-core/schema/work-item.json +92 -0
- package/dist/engineering-pa-core/src/config/pa-package-name.mjs +30 -0
- package/dist/engineering-pa-core/src/desk/cli.mjs +95 -0
- package/dist/engineering-pa-core/src/desk/commands.mjs +398 -0
- package/dist/engineering-pa-core/src/desk/format.mjs +84 -0
- package/dist/engineering-pa-core/src/desk/repo.mjs +172 -0
- package/dist/engineering-pa-core/src/desk/team-scope.mjs +142 -0
- package/dist/engineering-pa-core/src/distill/cli.mjs +112 -0
- package/dist/engineering-pa-core/src/distill/prereqs.mjs +171 -0
- package/dist/engineering-pa-core/src/distill/prompt.mjs +74 -0
- package/dist/engineering-pa-core/src/distill/run.mjs +230 -0
- package/dist/engineering-pa-core/src/distill/runner.mjs +86 -0
- package/dist/engineering-pa-core/src/distill/staging.mjs +59 -0
- package/dist/engineering-pa-core/src/knowledge/retrieval/backlink-indexer.mjs +154 -0
- package/dist/engineering-pa-core/src/knowledge/retrieval/graph-builder.mjs +186 -0
- package/dist/engineering-pa-core/src/knowledge/retrieval/index-builder.mjs +225 -0
- package/dist/engineering-pa-core/src/knowledge/retrieval/query.mjs +263 -0
- package/dist/engineering-pa-core/src/lock/lock.mjs +202 -0
- package/dist/engineering-pa-core/src/memory-sync/cli-support.mjs +12 -0
- package/dist/engineering-pa-core/src/memory-sync/cli.mjs +56 -0
- package/dist/engineering-pa-core/src/memory-sync/commands/pull.mjs +44 -0
- package/dist/engineering-pa-core/src/memory-sync/commands/push.mjs +46 -0
- package/dist/engineering-pa-core/src/memory-sync/mirror.mjs +114 -0
- package/dist/engineering-pa-core/src/memory-sync/repo.mjs +65 -0
- package/dist/engineering-pa-core/src/scheduler/detect.mjs +111 -0
- package/dist/engineering-pa-core/src/scheduler/host.mjs +38 -0
- package/dist/engineering-pa-core/src/scheduler/index.mjs +13 -0
- package/dist/engineering-pa-core/src/scheduler/install.mjs +854 -0
- package/dist/engineering-pa-core/src/scheduler/list.mjs +168 -0
- package/dist/engineering-pa-core/src/scheduler/remove.mjs +176 -0
- package/dist/engineering-pa-core/src/scheduler/verify.mjs +435 -0
- package/dist/engineering-pa-core/src/session-boot/autonomy-injection.mjs +84 -0
- package/dist/engineering-pa-core/src/slice/cli.mjs +139 -0
- package/dist/engineering-pa-core/src/slice/inputs.mjs +174 -0
- package/dist/engineering-pa-core/src/slice/prompt.mjs +94 -0
- package/dist/engineering-pa-core/src/slice/prompts/dave-boot.md +91 -0
- package/dist/engineering-pa-core/src/slice/run.mjs +334 -0
- package/dist/engineering-pa-core-extensions-atlassian/README.md +31 -0
- package/dist/engineering-pa-core-extensions-atlassian/index.mjs +9 -0
- package/dist/engineering-pa-core-extensions-atlassian/package.json +19 -0
- package/dist/engineering-pa-core-extensions-n8n/README.md +29 -0
- package/dist/engineering-pa-core-extensions-n8n/index.mjs +8 -0
- package/dist/engineering-pa-core-extensions-n8n/package.json +19 -0
- package/dist/engineering-pa-librarian/README.md +38 -0
- package/dist/engineering-pa-librarian/index.mjs +12 -0
- package/dist/engineering-pa-librarian/package.json +19 -0
- package/dist/engineering-pa-migrate-inspect/README.md +131 -0
- package/dist/engineering-pa-migrate-inspect/bin/migrate-inspect +2 -0
- package/dist/engineering-pa-migrate-inspect/package.json +21 -0
- package/dist/engineering-pa-migrate-inspect/src/age-key-migrate.mjs +83 -0
- package/dist/engineering-pa-migrate-inspect/src/cli.mjs +97 -0
- package/dist/engineering-pa-migrate-inspect/src/inspector.mjs +237 -0
- package/dist/engineering-pa-migrate-inspect/src/platforms/linux.mjs +87 -0
- package/dist/engineering-pa-migrate-inspect/src/platforms/macos.mjs +105 -0
- package/dist/engineering-pa-migrate-inspect/src/runner.mjs +87 -0
- package/dist/engineering-pa-runbook/README.md +103 -0
- package/dist/engineering-pa-runbook/package.json +18 -0
- package/dist/engineering-pa-runbook/reference/dex-template.runbook.json +66 -0
- package/dist/engineering-pa-runbook/reference/hq-dave.runbook.json +69 -0
- package/dist/engineering-pa-runbook/reference/smarthome01.runbook.json +92 -0
- package/dist/engineering-pa-runbook/schema/inspection.schema.json +113 -0
- package/dist/engineering-pa-runbook/schema/runbook.schema.json +67 -0
- package/dist/engineering-pa-runbook/src/validator.mjs +167 -0
- package/dist/engineering-pa-scaffold/README.md +164 -0
- package/dist/engineering-pa-scaffold/bin/pa-init +2 -0
- package/dist/engineering-pa-scaffold/index.mjs +42 -0
- package/dist/engineering-pa-scaffold/package.json +22 -0
- package/dist/engineering-pa-scaffold/src/cli.mjs +115 -0
- package/dist/engineering-pa-scaffold/src/commands/init.mjs +169 -0
- package/dist/engineering-pa-scaffold/src/generator.mjs +354 -0
- package/dist/engineering-pa-scaffold/src/prompts.mjs +125 -0
- package/dist/engineering-pa-scaffold/src/runner.mjs +142 -0
- package/dist/engineering-pa-scaffold/templates/CLAUDE.md.template +196 -0
- package/dist/engineering-pa-scaffold/templates/operator-README.md.template +44 -0
- package/dist/engineering-pa-types-engineering/README.md +35 -0
- package/dist/engineering-pa-types-engineering/docs/commands/product-build.md +120 -0
- package/dist/engineering-pa-types-engineering/index.mjs +9 -0
- package/dist/engineering-pa-types-engineering/package.json +19 -0
- package/dist/engineering-pa-types-engineering/roles/product-engineer/definition.md +650 -0
- package/dist/engineering-pa-types-engineering/roles/product-engineer/templates/build-spec.md +82 -0
- package/dist/engineering-pa-types-engineering/roles/product-engineer/templates/preflight-checklist.md +158 -0
- package/dist/engineering-pa-types-engineering/roles/product-engineer/templates/worker-brief.md +130 -0
- package/dist/engineering-pa-workspace/README.md +197 -0
- package/dist/engineering-pa-workspace/app/assets/md.js +187 -0
- package/dist/engineering-pa-workspace/app/assets/modal.js +120 -0
- package/dist/engineering-pa-workspace/app/assets/theme.css +132 -0
- package/dist/engineering-pa-workspace/app/assets/theme.js +159 -0
- package/dist/engineering-pa-workspace/app/banner.js +320 -0
- package/dist/engineering-pa-workspace/app/delegations.html +345 -0
- package/dist/engineering-pa-workspace/app/home.html +1060 -0
- package/dist/engineering-pa-workspace/app/index.html +361 -0
- package/dist/engineering-pa-workspace/app/knowledge-map.html +163 -0
- package/dist/engineering-pa-workspace/app/knowledge.html +304 -0
- package/dist/engineering-pa-workspace/app/nav.json +75 -0
- package/dist/engineering-pa-workspace/app/notes.html +199 -0
- package/dist/engineering-pa-workspace/app/onboarding.html +592 -0
- package/dist/engineering-pa-workspace/app/profile.html +243 -0
- package/dist/engineering-pa-workspace/app/project-detail.html +432 -0
- package/dist/engineering-pa-workspace/app/projects.html +297 -0
- package/dist/engineering-pa-workspace/app/repos.html +598 -0
- package/dist/engineering-pa-workspace/app/schedules.html +486 -0
- package/dist/engineering-pa-workspace/app/secrets.html +164 -0
- package/dist/engineering-pa-workspace/app/staging.html +319 -0
- package/dist/engineering-pa-workspace/app/tasks.html +465 -0
- package/dist/engineering-pa-workspace/app/vendor/chart.umd.min.js +21 -0
- package/dist/engineering-pa-workspace/app/viewer.html +116 -0
- package/dist/engineering-pa-workspace/docs/DAEMON.md +104 -0
- package/dist/engineering-pa-workspace/docs/page-blueprint.md +286 -0
- package/dist/engineering-pa-workspace/docs/status-mon.md +168 -0
- package/dist/engineering-pa-workspace/index.mjs +12 -0
- package/dist/engineering-pa-workspace/nav.json.example +8 -0
- package/dist/engineering-pa-workspace/package.json +27 -0
- package/dist/engineering-pa-workspace/src/api.mjs +2086 -0
- package/dist/engineering-pa-workspace/src/install-daemon.mjs +573 -0
- package/dist/engineering-pa-workspace/src/nav.mjs +190 -0
- package/dist/engineering-pa-workspace/src/secrets-api.mjs +175 -0
- package/dist/engineering-pa-workspace/src/server.mjs +516 -0
- package/dist/engineering-pa-workspace/src/status-mon/poll.mjs +220 -0
- package/dist/engineering-pa-workspace/src/status-mon/poller.mjs +113 -0
- package/dist/engineering-pa-workspace/src/status-mon/run.mjs +133 -0
- package/dist/engineering-pa-workspace/src/supervisor.mjs +264 -0
- package/dist/engineering-pa-workspace/src/ws.mjs +633 -0
- package/index.mjs +60 -0
- package/package.json +58 -0
- package/templates/banned-ai-tells.md +102 -0
- package/templates/purpose.md +105 -0
- package/templates/voice-guide.md +98 -0
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* supervisor.mjs — Detect and introspect the workspace's service supervisor.
|
|
3
|
+
*
|
|
4
|
+
* The workspace can be run two ways:
|
|
5
|
+
* 1. Foreground / detached via ws.mjs (the pidfile dance).
|
|
6
|
+
* 2. Supervised by launchd (macOS) or systemd (--user, Linux), installed
|
|
7
|
+
* via install-daemon.mjs.
|
|
8
|
+
*
|
|
9
|
+
* When a supervisor is present, ws.mjs must NOT manage the process directly:
|
|
10
|
+
* - `kill <pid>` will be undone by KeepAlive / Restart=always within ms.
|
|
11
|
+
* - The CLI's pidfile does not exist, so the legacy status check reports
|
|
12
|
+
* "stopped" while a healthy process serves the port.
|
|
13
|
+
*
|
|
14
|
+
* This module exports pure-ish functions that:
|
|
15
|
+
* - locate the per-platform unit file,
|
|
16
|
+
* - parse the supervisor's view of the service (PID + state),
|
|
17
|
+
* - probe which PID currently listens on a TCP port via lsof / ss / netstat.
|
|
18
|
+
*
|
|
19
|
+
* All shell-outs are funnelled through an injectable `exec` parameter so the
|
|
20
|
+
* tests can run on any host without touching launchctl / systemctl / lsof.
|
|
21
|
+
*
|
|
22
|
+
* Exit-code policy follows the tooling standard §6:
|
|
23
|
+
* 0 ok | 1 usage error | 2 operational failure | 3 transport/IO failure
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import { existsSync } from 'node:fs';
|
|
27
|
+
import { homedir, platform as osPlatform } from 'node:os';
|
|
28
|
+
import { join } from 'node:path';
|
|
29
|
+
import { execSync } from 'node:child_process';
|
|
30
|
+
|
|
31
|
+
export const LAUNCHD_LABEL = 'com.dave.workspace';
|
|
32
|
+
export const SYSTEMD_UNIT = 'dave-workspace.service';
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @typedef {object} SupervisorInfo
|
|
36
|
+
* @property {'launchd'|'systemd'|null} kind Which supervisor is configured (null = none)
|
|
37
|
+
* @property {string|null} unitPath Path to the plist (launchd) or unit (systemd) file
|
|
38
|
+
* @property {string} label Service label (launchd) or unit name (systemd)
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @typedef {object} SupervisorState
|
|
43
|
+
* @property {'running'|'loaded'|'inactive'|'unknown'} state
|
|
44
|
+
* @property {number|null} pid Supervised process PID, if known
|
|
45
|
+
* @property {string|null} raw Raw supervisor output for diagnostics
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Resolve the launchd plist path for the workspace daemon.
|
|
50
|
+
* @param {{ home?: string }} [opts]
|
|
51
|
+
*/
|
|
52
|
+
export function launchdPlistPath(opts = {}) {
|
|
53
|
+
const home = opts.home || homedir();
|
|
54
|
+
return join(home, 'Library', 'LaunchAgents', `${LAUNCHD_LABEL}.plist`);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Resolve the systemd --user unit path for the workspace daemon.
|
|
59
|
+
* @param {{ home?: string }} [opts]
|
|
60
|
+
*/
|
|
61
|
+
export function systemdUnitPath(opts = {}) {
|
|
62
|
+
const home = opts.home || homedir();
|
|
63
|
+
return join(home, '.config', 'systemd', 'user', SYSTEMD_UNIT);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Detect which supervisor (if any) manages the workspace on this host.
|
|
68
|
+
*
|
|
69
|
+
* Detection is purely file-existence based — it does NOT shell out to the
|
|
70
|
+
* service manager. A unit file alone is sufficient to claim supervision;
|
|
71
|
+
* whether it is currently loaded is a separate question answered by
|
|
72
|
+
* {@link readSupervisorState}.
|
|
73
|
+
*
|
|
74
|
+
* @param {object} [deps]
|
|
75
|
+
* @param {string} [deps.platform] os.platform() return — overridable for tests
|
|
76
|
+
* @param {string} [deps.home] Home directory — overridable for tests
|
|
77
|
+
* @param {(p: string) => boolean} [deps.fileExists] Existence probe — overridable for tests
|
|
78
|
+
* @returns {SupervisorInfo}
|
|
79
|
+
*/
|
|
80
|
+
export function detectSupervisor(deps = {}) {
|
|
81
|
+
const plat = deps.platform || osPlatform();
|
|
82
|
+
const home = deps.home || homedir();
|
|
83
|
+
const fileExists = deps.fileExists || existsSync;
|
|
84
|
+
|
|
85
|
+
if (plat === 'darwin') {
|
|
86
|
+
const p = launchdPlistPath({ home });
|
|
87
|
+
if (fileExists(p)) return { kind: 'launchd', unitPath: p, label: LAUNCHD_LABEL };
|
|
88
|
+
}
|
|
89
|
+
if (plat === 'linux') {
|
|
90
|
+
const p = systemdUnitPath({ home });
|
|
91
|
+
if (fileExists(p)) return { kind: 'systemd', unitPath: p, label: SYSTEMD_UNIT };
|
|
92
|
+
}
|
|
93
|
+
return { kind: null, unitPath: null, label: '' };
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Parse `launchctl list <label>` output for PID and last-exit info.
|
|
98
|
+
* Output is a plist-ish dict; we only need PID and LastExitStatus.
|
|
99
|
+
*
|
|
100
|
+
* @param {string} raw
|
|
101
|
+
* @returns {SupervisorState}
|
|
102
|
+
*/
|
|
103
|
+
export function parseLaunchctlList(raw) {
|
|
104
|
+
if (!raw) return { state: 'unknown', pid: null, raw: raw || '' };
|
|
105
|
+
const pidMatch = raw.match(/"PID"\s*=\s*(\d+)/);
|
|
106
|
+
if (pidMatch) {
|
|
107
|
+
const pid = parseInt(pidMatch[1], 10);
|
|
108
|
+
if (Number.isFinite(pid) && pid > 0) {
|
|
109
|
+
return { state: 'running', pid, raw };
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// No PID line → loaded but not currently running (KeepAlive may be throttling
|
|
113
|
+
// a restart, or the service exited and is about to relaunch).
|
|
114
|
+
return { state: 'loaded', pid: null, raw };
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Parse `systemctl --user show <unit>` (key=value pairs) for ActiveState and MainPID.
|
|
119
|
+
* @param {string} raw
|
|
120
|
+
* @returns {SupervisorState}
|
|
121
|
+
*/
|
|
122
|
+
export function parseSystemctlShow(raw) {
|
|
123
|
+
if (!raw) return { state: 'unknown', pid: null, raw: raw || '' };
|
|
124
|
+
const lines = raw.split(/\r?\n/);
|
|
125
|
+
const map = {};
|
|
126
|
+
for (const l of lines) {
|
|
127
|
+
const idx = l.indexOf('=');
|
|
128
|
+
if (idx === -1) continue;
|
|
129
|
+
map[l.slice(0, idx).trim()] = l.slice(idx + 1).trim();
|
|
130
|
+
}
|
|
131
|
+
const active = map.ActiveState || 'unknown';
|
|
132
|
+
const pidStr = map.MainPID;
|
|
133
|
+
const pid = pidStr && /^\d+$/.test(pidStr) && pidStr !== '0' ? parseInt(pidStr, 10) : null;
|
|
134
|
+
|
|
135
|
+
let state = 'unknown';
|
|
136
|
+
if (active === 'active') state = 'running';
|
|
137
|
+
else if (active === 'activating' || active === 'reloading') state = 'loaded';
|
|
138
|
+
else if (active === 'inactive' || active === 'failed' || active === 'deactivating') state = 'inactive';
|
|
139
|
+
|
|
140
|
+
return { state, pid, raw };
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Read live supervisor state by invoking `launchctl list` / `systemctl --user show`.
|
|
145
|
+
* Shell-out is funnelled through an injectable `exec` so tests don't touch the host.
|
|
146
|
+
*
|
|
147
|
+
* @param {SupervisorInfo} info
|
|
148
|
+
* @param {object} [deps]
|
|
149
|
+
* @param {(cmd: string) => string} [deps.exec] Sync exec returning stdout. Throws on failure.
|
|
150
|
+
* @returns {SupervisorState}
|
|
151
|
+
*/
|
|
152
|
+
export function readSupervisorState(info, deps = {}) {
|
|
153
|
+
const exec = deps.exec || ((cmd) => execSync(cmd, { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] }));
|
|
154
|
+
if (!info || !info.kind) return { state: 'unknown', pid: null, raw: '' };
|
|
155
|
+
|
|
156
|
+
try {
|
|
157
|
+
if (info.kind === 'launchd') {
|
|
158
|
+
const raw = exec(`launchctl list ${info.label}`);
|
|
159
|
+
return parseLaunchctlList(raw);
|
|
160
|
+
}
|
|
161
|
+
if (info.kind === 'systemd') {
|
|
162
|
+
const raw = exec(`systemctl --user show ${info.label} --no-pager`);
|
|
163
|
+
return parseSystemctlShow(raw);
|
|
164
|
+
}
|
|
165
|
+
} catch {
|
|
166
|
+
// launchctl exits non-zero when the label isn't loaded; systemctl exits
|
|
167
|
+
// non-zero when the unit isn't installed. Either way the service is not
|
|
168
|
+
// currently registered → "inactive" is the safe report.
|
|
169
|
+
return { state: 'inactive', pid: null, raw: '' };
|
|
170
|
+
}
|
|
171
|
+
return { state: 'unknown', pid: null, raw: '' };
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Identify which PID currently holds a TCP listener on `port`, if any.
|
|
176
|
+
*
|
|
177
|
+
* Probes in order:
|
|
178
|
+
* - lsof (mac, most Linux)
|
|
179
|
+
* - ss (modern Linux without lsof)
|
|
180
|
+
* - netstat (Windows fallback)
|
|
181
|
+
*
|
|
182
|
+
* Returns null if no probe is available or no PID can be derived. Used by
|
|
183
|
+
* `pa workspace status` to corroborate the supervisor's view with what's
|
|
184
|
+
* actually listening on the port.
|
|
185
|
+
*
|
|
186
|
+
* @param {number} port
|
|
187
|
+
* @param {object} [deps]
|
|
188
|
+
* @param {(cmd: string) => string} [deps.exec]
|
|
189
|
+
* @param {string} [deps.platform]
|
|
190
|
+
* @returns {{ pid: number, command: string|null }|null}
|
|
191
|
+
*/
|
|
192
|
+
export function findPortListener(port, deps = {}) {
|
|
193
|
+
const exec = deps.exec || ((cmd) => execSync(cmd, { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] }));
|
|
194
|
+
const plat = deps.platform || osPlatform();
|
|
195
|
+
|
|
196
|
+
// Windows: netstat -ano | findstr :PORT
|
|
197
|
+
if (plat === 'win32') {
|
|
198
|
+
try {
|
|
199
|
+
const raw = exec(`netstat -ano -p tcp | findstr :${port}`);
|
|
200
|
+
const line = raw.split(/\r?\n/).find((l) => l.includes('LISTENING'));
|
|
201
|
+
if (!line) return null;
|
|
202
|
+
const parts = line.trim().split(/\s+/);
|
|
203
|
+
const pid = parseInt(parts[parts.length - 1], 10);
|
|
204
|
+
if (!Number.isFinite(pid)) return null;
|
|
205
|
+
return { pid, command: null };
|
|
206
|
+
} catch {
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// Unix: try lsof first (preferred — gives command name too).
|
|
212
|
+
try {
|
|
213
|
+
const raw = exec(`lsof -nP -iTCP:${port} -sTCP:LISTEN -Fpc`);
|
|
214
|
+
const lines = raw.split(/\r?\n/).filter(Boolean);
|
|
215
|
+
let pid = null;
|
|
216
|
+
let command = null;
|
|
217
|
+
for (const l of lines) {
|
|
218
|
+
if (l.startsWith('p')) pid = parseInt(l.slice(1), 10);
|
|
219
|
+
else if (l.startsWith('c')) command = l.slice(1);
|
|
220
|
+
}
|
|
221
|
+
if (Number.isFinite(pid)) return { pid, command };
|
|
222
|
+
} catch {
|
|
223
|
+
// lsof absent or no listener — fall through to ss.
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// Linux without lsof: ss -ltnp 'sport = :PORT'
|
|
227
|
+
try {
|
|
228
|
+
const raw = exec(`ss -ltnp sport = :${port}`);
|
|
229
|
+
// Example line:
|
|
230
|
+
// LISTEN 0 511 127.0.0.1:4200 0.0.0.0:* users:(("node",pid=12345,fd=20))
|
|
231
|
+
const m = raw.match(/pid=(\d+)/);
|
|
232
|
+
if (!m) return null;
|
|
233
|
+
const pid = parseInt(m[1], 10);
|
|
234
|
+
if (!Number.isFinite(pid)) return null;
|
|
235
|
+
const cm = raw.match(/users:\(\("([^"]+)"/);
|
|
236
|
+
return { pid, command: cm ? cm[1] : null };
|
|
237
|
+
} catch {
|
|
238
|
+
return null;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Compose a one-shot CLI invocation that asks the supervisor to bounce the
|
|
244
|
+
* service. Returned as a string the caller can run via execSync — keeps the
|
|
245
|
+
* actual exec out of this module so callers can dry-run or pipe stdio.
|
|
246
|
+
*
|
|
247
|
+
* @param {SupervisorInfo} info
|
|
248
|
+
* @returns {string|null}
|
|
249
|
+
*/
|
|
250
|
+
export function restartCommand(info) {
|
|
251
|
+
if (!info || !info.kind) return null;
|
|
252
|
+
if (info.kind === 'launchd') {
|
|
253
|
+
// `kickstart -k` kills the running process and respawns it — exactly the
|
|
254
|
+
// semantic we want for an in-place version pickup. The gui/$UID target
|
|
255
|
+
// is the per-user launchd domain where LaunchAgents live.
|
|
256
|
+
const uid = typeof process !== 'undefined' && process.getuid ? process.getuid() : null;
|
|
257
|
+
if (uid === null) return null;
|
|
258
|
+
return `launchctl kickstart -k gui/${uid}/${info.label}`;
|
|
259
|
+
}
|
|
260
|
+
if (info.kind === 'systemd') {
|
|
261
|
+
return `systemctl --user restart ${info.label}`;
|
|
262
|
+
}
|
|
263
|
+
return null;
|
|
264
|
+
}
|