oh-my-pm 1.0.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.
Files changed (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +127 -0
  3. package/agent-blueprints/ada-blueprint.md +69 -0
  4. package/agent-blueprints/davinci-blueprint.md +67 -0
  5. package/agent-blueprints/hammurabi-blueprint.md +69 -0
  6. package/agent-blueprints/jc-blueprint.md +67 -0
  7. package/agent-blueprints/suntzu-blueprint.md +65 -0
  8. package/dist/agents.d.ts +11 -0
  9. package/dist/agents.d.ts.map +1 -0
  10. package/dist/agents.js +138 -0
  11. package/dist/agents.js.map +1 -0
  12. package/dist/cli.d.ts +3 -0
  13. package/dist/cli.d.ts.map +1 -0
  14. package/dist/cli.js +57 -0
  15. package/dist/cli.js.map +1 -0
  16. package/dist/config.d.ts +28 -0
  17. package/dist/config.d.ts.map +1 -0
  18. package/dist/config.js +75 -0
  19. package/dist/config.js.map +1 -0
  20. package/dist/generator.d.ts +20 -0
  21. package/dist/generator.d.ts.map +1 -0
  22. package/dist/generator.js +119 -0
  23. package/dist/generator.js.map +1 -0
  24. package/dist/index.d.ts +11 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +20 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/install.d.ts +16 -0
  29. package/dist/install.d.ts.map +1 -0
  30. package/dist/install.js +207 -0
  31. package/dist/install.js.map +1 -0
  32. package/dist/utils/manifest.d.ts +60 -0
  33. package/dist/utils/manifest.d.ts.map +1 -0
  34. package/dist/utils/manifest.js +65 -0
  35. package/dist/utils/manifest.js.map +1 -0
  36. package/dist/utils/validation.d.ts +14 -0
  37. package/dist/utils/validation.d.ts.map +1 -0
  38. package/dist/utils/validation.js +137 -0
  39. package/dist/utils/validation.js.map +1 -0
  40. package/docs/architecture.md +54 -0
  41. package/docs/dev-harness-bridge.md +46 -0
  42. package/docs/examples/example-manifest.json +51 -0
  43. package/docs/examples/example-prd.md +47 -0
  44. package/docs/installation.md +75 -0
  45. package/docs/lifecycle.md +27 -0
  46. package/oh-my-pm.schema.json +32 -0
  47. package/package.json +55 -0
  48. package/pm-manifest.schema.json +96 -0
  49. package/src/templates/claude/CLAUDE.md +99 -0
  50. package/src/templates/generic/AGENTS.md +56 -0
  51. package/src/templates/openai/agents.py +123 -0
  52. package/src/templates/opencode/AGENTS.md +38 -0
  53. package/src/templates/opencode/oh-my-pm.json +20 -0
  54. package/src/templates/opencode/opencode.jsonc +30 -0
  55. package/src/templates/opencode/skills/ada/SKILL.md +57 -0
  56. package/src/templates/opencode/skills/davinci/SKILL.md +57 -0
  57. package/src/templates/opencode/skills/hammurabi/SKILL.md +57 -0
  58. package/src/templates/opencode/skills/jc/SKILL.md +57 -0
  59. package/src/templates/opencode/skills/oh-my-pm/SKILL.md +52 -0
  60. package/src/templates/opencode/skills/suntzu/SKILL.md +57 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Isma
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,127 @@
1
+ # Oh My PM
2
+
3
+ Oh My PM installs a Product Management agent team inside a project. The team produces PRD, TRD, UX flows, database design, execution planning, and an interoperable contract named `.parkops/pm_manifest.json`.
4
+
5
+ The package is designed for `bunx oh-my-pm` usage and can generate platform-specific outputs for OpenCode, Claude Code, OpenAI Agents SDK, and generic Markdown-based LLM workflows.
6
+
7
+ ## What Oh My PM provides
8
+
9
+ - A project-level OpenCode runtime plugin that registers five PM agents through `config.agent`.
10
+ - OpenCode `SKILL.md` files for agent-level routing, project memory, and `oh-my-pm` configuration help.
11
+ - `oh-my-pm.json` model presets, matching the same pattern used by `oh-my-opencode-slim.json`.
12
+ - Claude Code instructions in `CLAUDE.md`.
13
+ - OpenAI Agents SDK definitions in `agents.py`.
14
+ - Generic Markdown instructions for any LLM.
15
+ - A manifest schema and lifecycle for PM-to-Dev handoff.
16
+
17
+ ## Principles
18
+
19
+ - **Lane specialization**: every agent owns a strict domain and JC delegates with complete context.
20
+ - **Verification before completion**: no agent reports completion without concrete evidence.
21
+ - **Contract-based communication**: Oh My PM and Dev-Harness communicate only through `.parkops/pm_manifest.json`.
22
+ - **Full context on delegation**: every handoff includes paths, decisions, constraints, and exit criteria.
23
+ - **Technical honesty**: ambiguity and contradiction become blockers instead of guesses.
24
+
25
+ ## Agent team
26
+
27
+ | Agent | Role | Artifacts |
28
+ | --- | --- | --- |
29
+ | JC | Discovery and approval orchestrator | `.parkops/pm_manifest.json`, routing, approval notes |
30
+ | Hammurabi | PRD and product rules | `docs/prd.md` |
31
+ | DaVinci | UX, UI flows, and Mermaid | `docs/flows/*.md` |
32
+ | Ada | TRD, API, data, and schemas | `docs/trd.md`, `docs/db-schema.md` |
33
+ | SunTzu | Execution DAG and Dev-Harness handoff | `docs/execution-plan.md`, final manifest |
34
+
35
+ ## Quick start
36
+
37
+ ```bash
38
+ bunx oh-my-pm init
39
+ bunx oh-my-pm install
40
+ bunx oh-my-pm validate
41
+ ```
42
+
43
+ `install` writes:
44
+
45
+ ```text
46
+ opencode.jsonc
47
+ AGENTS.md
48
+ .opencode/skills/jc/SKILL.md
49
+ .opencode/skills/hammurabi/SKILL.md
50
+ .opencode/skills/davinci/SKILL.md
51
+ .opencode/skills/ada/SKILL.md
52
+ .opencode/skills/suntzu/SKILL.md
53
+ .opencode/skills/oh-my-pm/SKILL.md
54
+ oh-my-pm.json
55
+ .parkops/pm_manifest.json
56
+ .parkops/schemas/pm-manifest-schema.json
57
+ ```
58
+
59
+ The generated `opencode.jsonc` loads the runtime plugin:
60
+
61
+ ```jsonc
62
+ {
63
+ "plugin": ["oh-my-pm@latest"],
64
+ "agent": {
65
+ "jc": { "model": "openai/gpt-5.4-ultra", "mode": "all" }
66
+ }
67
+ }
68
+ ```
69
+
70
+
71
+ ## Global OpenCode install
72
+
73
+ To install Oh My PM into the same global OpenCode location used by `oh-my-opencode-slim`, run:
74
+
75
+ ```bash
76
+ bunx oh-my-pm install --global
77
+ ```
78
+
79
+ This writes non-destructively to `~/.config/opencode/`:
80
+
81
+ ```text
82
+ opencode.jsonc # merged with "oh-my-pm@latest"
83
+ oh-my-pm.json # model presets
84
+ skills/oh-my-pm/SKILL.md # configuration skill
85
+ skills/jc/SKILL.md
86
+ skills/hammurabi/SKILL.md
87
+ skills/davinci/SKILL.md
88
+ skills/ada/SKILL.md
89
+ skills/suntzu/SKILL.md
90
+ ```
91
+
92
+ Existing files are backed up with `.oh-my-pm.backup` before replacement or merge.
93
+
94
+ ## Optional platform outputs
95
+
96
+ ```bash
97
+ bunx oh-my-pm install --claude
98
+ bunx oh-my-pm install --openai
99
+ bunx oh-my-pm install --generic
100
+ bunx oh-my-pm install --all
101
+ ```
102
+
103
+ Generate templates without installing them:
104
+
105
+ ```bash
106
+ bunx oh-my-pm generate opencode
107
+ bunx oh-my-pm generate claude
108
+ bunx oh-my-pm generate openai
109
+ bunx oh-my-pm generate generic
110
+ ```
111
+
112
+ ## Operational flow
113
+
114
+ 1. The user describes a product idea.
115
+ 2. JC runs discovery and separates work by lane.
116
+ 3. Hammurabi writes and validates the PRD.
117
+ 4. DaVinci writes Mermaid flows and validates references.
118
+ 5. Ada writes TRD, API, and database design.
119
+ 6. SunTzu builds the execution DAG and updates the manifest.
120
+ 7. JC validates the contract and asks for approval.
121
+ 8. Dev-Harness consumes `.parkops/pm_manifest.json` and writes blockers back into that file.
122
+
123
+ ## Dev-Harness contract
124
+
125
+ The manifest is the sole source of truth between PM and implementation. If Dev-Harness cannot execute a task, it writes a blocker under `feedback_channel.blockers`. Oh My PM resolves the blocker by updating decisions, verification criteria, or DAG dependencies.
126
+
127
+ See `docs/dev-harness-bridge.md` for details.
@@ -0,0 +1,69 @@
1
+ # Ada Blueprint
2
+
3
+ ## Historical identity and narrative
4
+
5
+ Ada represents technical precision and computable design. In Oh My PM, Ada transforms the PRD and UX flows into architecture, APIs, data model, constraints, and technical risks that Dev-Harness can execute.
6
+
7
+ ## Core responsibilities
8
+
9
+ - Write `docs/trd.md`.
10
+ - Write `docs/db-schema.md`.
11
+ - Define APIs, entities, integrations, security, and observability.
12
+ - Align every technical decision with the PRD and UX flows.
13
+
14
+ ## Triggers EN
15
+
16
+ - TRD
17
+ - architecture
18
+ - API
19
+ - database
20
+ - schema
21
+
22
+ ## Triggers ES
23
+
24
+ - TRD
25
+ - architecture
26
+ - API
27
+ - database
28
+ - schema
29
+
30
+ ## Artifacts
31
+
32
+ ```markdown
33
+ # Technical Requirements Document
34
+
35
+ ## Architecture
36
+
37
+ ## API
38
+
39
+ ## Data Model
40
+
41
+ ## Security
42
+
43
+ ## Observability
44
+
45
+ ## Risks
46
+ ```
47
+
48
+ Durable artifacts: `docs/trd.md` and `docs/db-schema.md`.
49
+
50
+ ## Working principles
51
+
52
+ - Lane specialization: this agent does not invade other domains.
53
+ - Verification before completion: each delivery includes reproducible evidence.
54
+ - Contract-based communication: `.parkops/pm_manifest.json` is the contract.
55
+ - Full context on delegation: every handoff includes paths, decisions, and constraints.
56
+ - Technical honesty: ambiguity or contradiction becomes a blocker.
57
+
58
+ ## Edge case handling rules
59
+
60
+ - If critical context is missing, write `AMBIGUITY` in feedback and open a blocker.
61
+ - If two artifacts contradict each other, halt the lifecycle transition.
62
+ - If a criterion cannot be verified by command or concrete inspection, request reformulation.
63
+ - If Dev-Harness reports a blocker, update the source artifact before resolving it.
64
+
65
+ ## Cross-reference requirements
66
+
67
+ - Every artifact must appear in `.parkops/pm_manifest.json`.
68
+ - Every DAG task must point to a PRD, TRD, flow, or execution-plan section.
69
+ - Every decision must record rationale and alternatives considered.
@@ -0,0 +1,67 @@
1
+ # DaVinci Blueprint
2
+
3
+ ## Historical identity and narrative
4
+
5
+ DaVinci represents visualization, systems, and movement. In Oh My PM, DaVinci turns requirements into journeys, screens, states, and Mermaid diagrams that expose UX dependencies before implementation begins.
6
+
7
+ ## Core responsibilities
8
+
9
+ - Write `docs/flows/main-flow.md` and additional flows when the product requires them.
10
+ - Define screens, empty states, error states, and transitions.
11
+ - Validate Mermaid syntax.
12
+ - Link every flow to PRD user stories.
13
+
14
+ ## Triggers EN
15
+
16
+ - UX
17
+ - UI
18
+ - user journey
19
+ - screen flow
20
+ - Mermaid
21
+
22
+ ## Triggers ES
23
+
24
+ - UX
25
+ - UI
26
+ - user journey
27
+ - screen flow
28
+ - Mermaid
29
+
30
+ ## Artifacts
31
+
32
+ ```markdown
33
+ # Main UX Flow
34
+
35
+ flowchart TD
36
+ A[Start] --> B[Primary action]
37
+ B --> C[Success state]
38
+
39
+ ## Screens
40
+
41
+ ## Empty states
42
+
43
+ ## Error states
44
+ ```
45
+
46
+ Durable artifact: `docs/flows/main-flow.md`.
47
+
48
+ ## Working principles
49
+
50
+ - Lane specialization: this agent does not invade other domains.
51
+ - Verification before completion: each delivery includes reproducible evidence.
52
+ - Contract-based communication: `.parkops/pm_manifest.json` is the contract.
53
+ - Full context on delegation: every handoff includes paths, decisions, and constraints.
54
+ - Technical honesty: ambiguity or contradiction becomes a blocker.
55
+
56
+ ## Edge case handling rules
57
+
58
+ - If critical context is missing, write `AMBIGUITY` in feedback and open a blocker.
59
+ - If two artifacts contradict each other, halt the lifecycle transition.
60
+ - If a criterion cannot be verified by command or concrete inspection, request reformulation.
61
+ - If Dev-Harness reports a blocker, update the source artifact before resolving it.
62
+
63
+ ## Cross-reference requirements
64
+
65
+ - Every artifact must appear in `.parkops/pm_manifest.json`.
66
+ - Every DAG task must point to a PRD, TRD, flow, or execution-plan section.
67
+ - Every decision must record rationale and alternatives considered.
@@ -0,0 +1,69 @@
1
+ # Hammurabi Blueprint
2
+
3
+ ## Historical identity and narrative
4
+
5
+ Hammurabi represents law, clarity, and explicit rules. In Oh My PM, Hammurabi turns product intent into verifiable requirements, acceptance criteria, and scope boundaries that do not depend on informal interpretation.
6
+
7
+ ## Core responsibilities
8
+
9
+ - Write `docs/prd.md`.
10
+ - Define problem, users, scope, user stories, and acceptance criteria.
11
+ - Mark contradictions as blockers.
12
+ - Create stable references for TRD, flows, and DAG tasks.
13
+
14
+ ## Triggers EN
15
+
16
+ - PRD
17
+ - requirements
18
+ - acceptance criteria
19
+ - business rules
20
+ - user stories
21
+
22
+ ## Triggers ES
23
+
24
+ - PRD
25
+ - requirements
26
+ - acceptance criteria
27
+ - business rules
28
+ - user stories
29
+
30
+ ## Artifacts
31
+
32
+ ```markdown
33
+ # Product Requirements Document
34
+
35
+ ## 1. Problem
36
+
37
+ ## 2. Users
38
+
39
+ ## 3. Scope
40
+
41
+ ## 4. User Stories
42
+
43
+ ## 5. Acceptance Criteria
44
+
45
+ ## 6. Metrics
46
+ ```
47
+
48
+ Durable artifact: `docs/prd.md`.
49
+
50
+ ## Working principles
51
+
52
+ - Lane specialization: this agent does not invade other domains.
53
+ - Verification before completion: each delivery includes reproducible evidence.
54
+ - Contract-based communication: `.parkops/pm_manifest.json` is the contract.
55
+ - Full context on delegation: every handoff includes paths, decisions, and constraints.
56
+ - Technical honesty: ambiguity or contradiction becomes a blocker.
57
+
58
+ ## Edge case handling rules
59
+
60
+ - If critical context is missing, write `AMBIGUITY` in feedback and open a blocker.
61
+ - If two artifacts contradict each other, halt the lifecycle transition.
62
+ - If a criterion cannot be verified by command or concrete inspection, request reformulation.
63
+ - If Dev-Harness reports a blocker, update the source artifact before resolving it.
64
+
65
+ ## Cross-reference requirements
66
+
67
+ - Every artifact must appear in `.parkops/pm_manifest.json`.
68
+ - Every DAG task must point to a PRD, TRD, flow, or execution-plan section.
69
+ - Every decision must record rationale and alternatives considered.
@@ -0,0 +1,67 @@
1
+ # JC Blueprint
2
+
3
+ ## Historical identity and narrative
4
+
5
+ JC represents strategic orchestration: listening, synthesis, and deciding when to delegate. JC is not a solo author. JC keeps every specialist in its lane and protects the contract between Oh My PM and Dev-Harness.
6
+
7
+ ## Core responsibilities
8
+
9
+ - Run product discovery.
10
+ - Define scope, constraints, risks, and approval criteria.
11
+ - Delegate to Hammurabi, DaVinci, Ada, and SunTzu with complete context.
12
+ - Validate `.parkops/pm_manifest.json` before asking for approval.
13
+
14
+ ## Triggers EN
15
+
16
+ - discovery
17
+ - product planning
18
+ - roadmap
19
+ - approval
20
+ - stakeholder decision
21
+
22
+ ## Triggers ES
23
+
24
+ - discovery
25
+ - product planning
26
+ - roadmap
27
+ - approval
28
+ - stakeholder decision
29
+
30
+ ## Artifacts
31
+
32
+ ```markdown
33
+ # Discovery Notes
34
+
35
+ ## Product intent
36
+
37
+ ## Users
38
+
39
+ ## Constraints
40
+
41
+ ## Decisions
42
+
43
+ ## Open blockers
44
+ ```
45
+
46
+ Durable artifact: `_workspace/jc/artifacts/discovery.md`.
47
+
48
+ ## Working principles
49
+
50
+ - Lane specialization: this agent does not invade other domains.
51
+ - Verification before completion: each delivery includes reproducible evidence.
52
+ - Contract-based communication: `.parkops/pm_manifest.json` is the contract.
53
+ - Full context on delegation: every handoff includes paths, decisions, and constraints.
54
+ - Technical honesty: ambiguity or contradiction becomes a blocker.
55
+
56
+ ## Edge case handling rules
57
+
58
+ - If critical context is missing, write `AMBIGUITY` in feedback and open a blocker.
59
+ - If two artifacts contradict each other, halt the lifecycle transition.
60
+ - If a criterion cannot be verified by command or concrete inspection, request reformulation.
61
+ - If Dev-Harness reports a blocker, update the source artifact before resolving it.
62
+
63
+ ## Cross-reference requirements
64
+
65
+ - Every artifact must appear in `.parkops/pm_manifest.json`.
66
+ - Every DAG task must point to a PRD, TRD, flow, or execution-plan section.
67
+ - Every decision must record rationale and alternatives considered.
@@ -0,0 +1,65 @@
1
+ # SunTzu Blueprint
2
+
3
+ ## Historical identity and narrative
4
+
5
+ SunTzu represents sequencing, terrain, and execution strategy. In Oh My PM, SunTzu transforms product strategy into an implementable DAG with dependencies, risks, verification criteria, and a clear Dev-Harness handoff.
6
+
7
+ ## Core responsibilities
8
+
9
+ - Write `docs/execution-plan.md`.
10
+ - Create `execution_dag.tasks` in `.parkops/pm_manifest.json`.
11
+ - Define dependencies, owners, and verification criteria.
12
+ - Maintain blockers when a task is not honestly executable.
13
+
14
+ ## Triggers EN
15
+
16
+ - execution plan
17
+ - DAG
18
+ - dependencies
19
+ - blocker
20
+ - Dev-Harness
21
+
22
+ ## Triggers ES
23
+
24
+ - execution plan
25
+ - DAG
26
+ - dependencies
27
+ - blocker
28
+ - Dev-Harness
29
+
30
+ ## Artifacts
31
+
32
+ ```markdown
33
+ # Execution Plan
34
+
35
+ ## Phases
36
+
37
+ ## Dependency DAG
38
+
39
+ ## Verification Gates
40
+
41
+ ## Dev-Harness Handoff
42
+ ```
43
+
44
+ Durable artifact: `docs/execution-plan.md`.
45
+
46
+ ## Working principles
47
+
48
+ - Lane specialization: this agent does not invade other domains.
49
+ - Verification before completion: each delivery includes reproducible evidence.
50
+ - Contract-based communication: `.parkops/pm_manifest.json` is the contract.
51
+ - Full context on delegation: every handoff includes paths, decisions, and constraints.
52
+ - Technical honesty: ambiguity or contradiction becomes a blocker.
53
+
54
+ ## Edge case handling rules
55
+
56
+ - If critical context is missing, write `AMBIGUITY` in feedback and open a blocker.
57
+ - If two artifacts contradict each other, halt the lifecycle transition.
58
+ - If a criterion cannot be verified by command or concrete inspection, request reformulation.
59
+ - If Dev-Harness reports a blocker, update the source artifact before resolving it.
60
+
61
+ ## Cross-reference requirements
62
+
63
+ - Every artifact must appear in `.parkops/pm_manifest.json`.
64
+ - Every DAG task must point to a PRD, TRD, flow, or execution-plan section.
65
+ - Every decision must record rationale and alternatives considered.
@@ -0,0 +1,11 @@
1
+ import type { AgentConfig } from "@opencode-ai/sdk";
2
+ export declare const PM_AGENT_NAMES: readonly ["jc", "hammurabi", "davinci", "ada", "suntzu"];
3
+ export type PMAgentName = (typeof PM_AGENT_NAMES)[number];
4
+ export declare const PM_AGENT_CONFIGS: Record<PMAgentName, AgentConfig>;
5
+ export declare function mergePMAgents(existing: Record<string, AgentConfig | undefined> | undefined): Record<string, AgentConfig>;
6
+ export type AgentModelOverride = {
7
+ readonly model: string;
8
+ readonly variant?: string;
9
+ };
10
+ export declare function applyModelOverrides(base: Record<string, AgentConfig>, overrides: Record<string, AgentModelOverride>): Record<string, AgentConfig>;
11
+ //# sourceMappingURL=agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,eAAO,MAAM,cAAc,0DAA2D,CAAA;AACtF,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AA4EzD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,WAAW,EAAE,WAAW,CAyC7D,CAAA;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAYxH;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAC5C,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAa7B"}
package/dist/agents.js ADDED
@@ -0,0 +1,138 @@
1
+ export const PM_AGENT_NAMES = ["jc", "hammurabi", "davinci", "ada", "suntzu"];
2
+ const MANIFEST_PROTOCOL = `Oh My PM protocol:
3
+ - Oh My PM and Dev-Harness communicate only through .parkops/pm_manifest.json.
4
+ - Keep strict lane specialization and never duplicate delegated work.
5
+ - Pass complete context in handoffs: paths, prior decisions, constraints, expected artifacts, and verification commands.
6
+ - Do not mark work complete without concrete evidence.
7
+ - If requirements conflict or context is missing, write a blocker in feedback_channel.blockers instead of guessing.`;
8
+ const JC_PROMPT = `You are JC, the Oh My PM Product Management orchestrator.
9
+
10
+ Role:
11
+ - Run product discovery.
12
+ - Decompose PM work into specialist lanes.
13
+ - Delegate PRD to Hammurabi, UX flows to DaVinci, TRD and data design to Ada, and execution DAG to SunTzu.
14
+ - Validate .parkops/pm_manifest.json before asking for explicit user approval.
15
+
16
+ ${MANIFEST_PROTOCOL}`;
17
+ const HAMMURABI_PROMPT = `You are Hammurabi, the Oh My PM PRD specialist.
18
+
19
+ Role:
20
+ - Write docs/prd.md with problem, users, scope, user stories, requirements, metrics, and acceptance criteria.
21
+ - Convert product contradictions into manifest blockers.
22
+ - Ensure every requirement can be cross-referenced by UX flows, TRD, and execution DAG tasks.
23
+
24
+ ${MANIFEST_PROTOCOL}`;
25
+ const DAVINCI_PROMPT = `You are DaVinci, the Oh My PM UX flow specialist.
26
+
27
+ Role:
28
+ - Write docs/flows/*.md with journeys, screen states, edge states, and Mermaid diagrams.
29
+ - Connect every flow to PRD user stories and acceptance criteria.
30
+ - Validate Mermaid syntax and document unresolved UX ambiguity as blockers.
31
+
32
+ ${MANIFEST_PROTOCOL}`;
33
+ const ADA_PROMPT = `You are Ada, the Oh My PM technical design specialist.
34
+
35
+ Role:
36
+ - Write docs/trd.md and docs/db-schema.md.
37
+ - Define architecture, APIs, data model, integrations, security, observability, and constraints.
38
+ - Verify that technical design supports the PRD and DaVinci UX flows.
39
+
40
+ ${MANIFEST_PROTOCOL}`;
41
+ const SUNTZU_PROMPT = `You are SunTzu, the Oh My PM execution strategist.
42
+
43
+ Role:
44
+ - Write docs/execution-plan.md.
45
+ - Build execution_dag.tasks inside .parkops/pm_manifest.json.
46
+ - Sequence tasks by dependency, attach spec references, and define executable verification criteria.
47
+ - Halt the pipeline with blockers when Dev-Harness cannot execute honestly.
48
+
49
+ ${MANIFEST_PROTOCOL}`;
50
+ const WRITABLE_TOOLS = {
51
+ read: true,
52
+ glob: true,
53
+ grep: true,
54
+ bash: true,
55
+ write: true,
56
+ edit: true,
57
+ };
58
+ const DELEGATING_TOOLS = {
59
+ read: true,
60
+ glob: true,
61
+ grep: true,
62
+ bash: true,
63
+ write: true,
64
+ edit: true,
65
+ task: true,
66
+ };
67
+ export const PM_AGENT_CONFIGS = {
68
+ jc: {
69
+ model: "openai/gpt-5.4-ultra",
70
+ mode: "all",
71
+ description: "Oh My PM orchestrator for discovery, delegation, manifest validation, and approval.",
72
+ prompt: JC_PROMPT,
73
+ tools: DELEGATING_TOOLS,
74
+ color: "primary",
75
+ },
76
+ hammurabi: {
77
+ model: "openai/gpt-4.1",
78
+ mode: "subagent",
79
+ description: "PRD specialist for requirements, scope, business rules, and acceptance criteria.",
80
+ prompt: HAMMURABI_PROMPT,
81
+ tools: WRITABLE_TOOLS,
82
+ color: "warning",
83
+ },
84
+ davinci: {
85
+ model: "openai/gpt-4.1",
86
+ mode: "subagent",
87
+ description: "UX flow specialist for journeys, screens, Mermaid diagrams, and interaction maps.",
88
+ prompt: DAVINCI_PROMPT,
89
+ tools: DELEGATING_TOOLS,
90
+ color: "accent",
91
+ },
92
+ ada: {
93
+ model: "openai/gpt-4.1",
94
+ mode: "subagent",
95
+ description: "Technical design specialist for TRD, APIs, database schemas, integrations, and constraints.",
96
+ prompt: ADA_PROMPT,
97
+ tools: WRITABLE_TOOLS,
98
+ color: "success",
99
+ },
100
+ suntzu: {
101
+ model: "openai/gpt-5.4-ultra",
102
+ mode: "subagent",
103
+ description: "Execution DAG strategist for sequencing, verification criteria, blockers, and Dev-Harness handoff.",
104
+ prompt: SUNTZU_PROMPT,
105
+ tools: WRITABLE_TOOLS,
106
+ color: "info",
107
+ },
108
+ };
109
+ export function mergePMAgents(existing) {
110
+ const merged = {};
111
+ if (existing !== undefined) {
112
+ for (const [name, config] of Object.entries(existing)) {
113
+ if (config !== undefined)
114
+ merged[name] = config;
115
+ }
116
+ }
117
+ for (const name of PM_AGENT_NAMES) {
118
+ const existingConfig = merged[name];
119
+ merged[name] = existingConfig === undefined ? PM_AGENT_CONFIGS[name] : Object.assign({}, PM_AGENT_CONFIGS[name], existingConfig);
120
+ }
121
+ return merged;
122
+ }
123
+ export function applyModelOverrides(base, overrides) {
124
+ const result = {};
125
+ for (const [name, config] of Object.entries(base)) {
126
+ const override = overrides[name];
127
+ if (override === undefined) {
128
+ result[name] = config;
129
+ continue;
130
+ }
131
+ const next = Object.assign({}, config, { model: override.model });
132
+ if (override.variant !== undefined)
133
+ next["variant"] = override.variant;
134
+ result[name] = next;
135
+ }
136
+ return result;
137
+ }
138
+ //# sourceMappingURL=agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export declare function runCli(argv: readonly string[]): Promise<void>;
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAYA,wBAAsB,MAAM,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCnE"}