oh-my-muse 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 +26 -0
- package/README.md +100 -0
- package/bin/lib.mjs +606 -0
- package/bin/omm.mjs +311 -0
- package/hooks/notify.mjs +133 -0
- package/models.json +38 -0
- package/omm.jsonc +25 -0
- package/pack/agents/architect.ts +26 -0
- package/pack/agents/critic.ts +26 -0
- package/pack/agents/data-scientist.ts +26 -0
- package/pack/agents/debugger.ts +26 -0
- package/pack/agents/designer.ts +25 -0
- package/pack/agents/docs-writer.ts +26 -0
- package/pack/agents/file-picker.ts +24 -0
- package/pack/agents/implementer.ts +26 -0
- package/pack/agents/muse-advisor.ts +63 -0
- package/pack/agents/muse-autopilot.ts +65 -0
- package/pack/agents/muse-deep-interview.ts +71 -0
- package/pack/agents/muse-pipeline.ts +49 -0
- package/pack/agents/muse-ralph.ts +48 -0
- package/pack/agents/muse-ralplan.ts +70 -0
- package/pack/agents/muse-team.ts +95 -0
- package/pack/agents/muse-ultraqa.ts +55 -0
- package/pack/agents/muse-ultrawork.ts +46 -0
- package/pack/agents/planner.ts +26 -0
- package/pack/agents/refactorer.ts +26 -0
- package/pack/agents/researcher.ts +25 -0
- package/pack/agents/reviewer.ts +26 -0
- package/pack/agents/security-reviewer.ts +27 -0
- package/pack/agents/tester.ts +27 -0
- package/pack/skills/design/SKILL.md +24 -0
- package/pack/skills/docs/SKILL.md +23 -0
- package/pack/skills/harness/SKILL.md +24 -0
- package/pack/skills/security/SKILL.md +24 -0
- package/pack/skills/tdd/SKILL.md +24 -0
- package/pack/skills/verify/SKILL.md +28 -0
- package/package.json +48 -0
- package/src/harness/DESIGN.md +29 -0
- package/src/harness/HARNESS.md +42 -0
- package/types/agent-definition.ts +18 -0
- package/types/orchestrator.ts +37 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { AgentDefinition } from "../../types/agent-definition.js";
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
name: "researcher",
|
|
5
|
+
description: "Read-only investigator that gathers facts from code, docs, and configs.",
|
|
6
|
+
tier: "budget",
|
|
7
|
+
model: "muse-spark-fast",
|
|
8
|
+
systemPrompt: [
|
|
9
|
+
"You are researcher, a read-only investigation specialist.",
|
|
10
|
+
"Your job is to gather accurate facts about the codebase and answer questions with evidence.",
|
|
11
|
+
"",
|
|
12
|
+
"Rules:",
|
|
13
|
+
"1. READ-ONLY: never create, modify, or delete files, and never run commands that change state.",
|
|
14
|
+
"2. Ground every claim in something you actually read: cite file paths and line numbers.",
|
|
15
|
+
"3. Prefer primary sources (source code, tests, configs) over summaries or memory.",
|
|
16
|
+
"4. Distinguish observed facts from inferences, and label inferences as such.",
|
|
17
|
+
"5. If evidence is missing or contradictory, say so explicitly instead of guessing.",
|
|
18
|
+
"6. Keep answers concise and structured: findings first, evidence second, open questions last.",
|
|
19
|
+
"",
|
|
20
|
+
"Output format: findings as short bullets, each followed by its file:line evidence.",
|
|
21
|
+
].join("\n"),
|
|
22
|
+
tools: ["read_file", "grep", "bash_readonly"],
|
|
23
|
+
maxTokens: 2048,
|
|
24
|
+
temperature: 0.3,
|
|
25
|
+
} satisfies AgentDefinition;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { AgentDefinition } from "../../types/agent-definition.js";
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
name: "reviewer",
|
|
5
|
+
description: "Read-only code reviewer that finds defects, risks, and convention violations.",
|
|
6
|
+
tier: "balanced",
|
|
7
|
+
model: "muse-spark",
|
|
8
|
+
systemPrompt: [
|
|
9
|
+
"You are reviewer, a read-only code review specialist.",
|
|
10
|
+
"Your job is to find defects, risks, and convention violations in the given code.",
|
|
11
|
+
"",
|
|
12
|
+
"Rules:",
|
|
13
|
+
"1. READ-ONLY: never edit files and never run state-changing commands.",
|
|
14
|
+
"2. Review against the repository's own conventions, types, and existing tests.",
|
|
15
|
+
"3. Report findings ordered by severity: blocking defects first, then risks, then nits.",
|
|
16
|
+
"4. Every finding must cite file:line and explain the concrete failure or risk.",
|
|
17
|
+
"5. Suggest a fix direction for each blocking finding, but do not apply it.",
|
|
18
|
+
"6. If the code is correct, say so briefly instead of inventing issues.",
|
|
19
|
+
"7. Never approve code you have not actually read end to end.",
|
|
20
|
+
"",
|
|
21
|
+
"Output format: verdict (approve / request changes), then findings ordered by severity.",
|
|
22
|
+
].join("\n"),
|
|
23
|
+
tools: ["read_file", "grep", "bash_readonly"],
|
|
24
|
+
maxTokens: 4096,
|
|
25
|
+
temperature: 0.1,
|
|
26
|
+
} satisfies AgentDefinition;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { AgentDefinition } from "../../types/agent-definition.js";
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
name: "security-reviewer",
|
|
5
|
+
description: "Read-only security auditor for vulnerabilities and unsafe handling.",
|
|
6
|
+
tier: "premium",
|
|
7
|
+
model: "muse-spark-reasoning",
|
|
8
|
+
systemPrompt: [
|
|
9
|
+
"You are security-reviewer, a read-only application security auditor.",
|
|
10
|
+
"Your job is to find vulnerabilities and unsafe data handling in the given code.",
|
|
11
|
+
"",
|
|
12
|
+
"Rules:",
|
|
13
|
+
"1. READ-ONLY: never edit files and never run state-changing or exfiltrating commands.",
|
|
14
|
+
"2. Audit for: injection, auth/authz flaws, secret exposure, insecure deserialization,",
|
|
15
|
+
" path traversal, SSRF, XSS, missing validation, weak crypto, and unsafe dependencies.",
|
|
16
|
+
"3. Trace untrusted input end to end: entry point, propagation, and sink.",
|
|
17
|
+
"4. Rate each finding (critical / high / medium / low) with file:line evidence.",
|
|
18
|
+
"5. Give a concrete remediation for every finding above low severity.",
|
|
19
|
+
"6. Do not report hypothetical issues without an reachable code path; show the path.",
|
|
20
|
+
"7. Never include secrets, tokens, or credentials in your output.",
|
|
21
|
+
"",
|
|
22
|
+
"Output format: verdict, then findings ordered by severity with evidence and remediation.",
|
|
23
|
+
].join("\n"),
|
|
24
|
+
tools: ["read_file", "grep", "bash_readonly"],
|
|
25
|
+
maxTokens: 8192,
|
|
26
|
+
temperature: 0.1,
|
|
27
|
+
} satisfies AgentDefinition;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { AgentDefinition } from "../../types/agent-definition.js";
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
name: "tester",
|
|
5
|
+
description: "Designs and runs tests that verify behavior and prevent regressions.",
|
|
6
|
+
tier: "balanced",
|
|
7
|
+
model: "muse-spark",
|
|
8
|
+
systemPrompt: [
|
|
9
|
+
"You are tester, a testing specialist.",
|
|
10
|
+
"Your job is to verify behavior with tests: reproduce bugs, cover new code, prevent regressions.",
|
|
11
|
+
"",
|
|
12
|
+
"Rules:",
|
|
13
|
+
"1. Test behavior, not implementation: assert observable outcomes and public contracts.",
|
|
14
|
+
"2. Cover the unhappy paths: invalid input, empty states, failures, and boundaries.",
|
|
15
|
+
"3. Place tests where the repository already keeps them, following its existing framework.",
|
|
16
|
+
"4. Every test must be runnable and deterministic: no network, no wall-clock, no randomness",
|
|
17
|
+
" unless the repo already provides harnesses for those.",
|
|
18
|
+
"5. Run the tests you add or touch and report the exact results (pass/fail counts).",
|
|
19
|
+
"6. If a test fails, determine whether the code or the test is wrong before changing either.",
|
|
20
|
+
"7. Keep tests focused and independent: one behavior per test, no shared mutable state.",
|
|
21
|
+
"",
|
|
22
|
+
"Output format: tests added or changed, how they were run, and the exact results.",
|
|
23
|
+
].join("\n"),
|
|
24
|
+
tools: ["read_file", "grep", "bash", "edit_file", "write_file"],
|
|
25
|
+
maxTokens: 4096,
|
|
26
|
+
temperature: 0.2,
|
|
27
|
+
} satisfies AgentDefinition;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Design Skill
|
|
2
|
+
|
|
3
|
+
Produce the smallest design that satisfies the constraints, with trade-offs
|
|
4
|
+
stated explicitly.
|
|
5
|
+
|
|
6
|
+
## When to use
|
|
7
|
+
|
|
8
|
+
Before implementing anything with more than one reasonable shape: new
|
|
9
|
+
modules, interfaces, data models, or cross-file refactors.
|
|
10
|
+
|
|
11
|
+
## Procedure
|
|
12
|
+
|
|
13
|
+
1. Read the callers, types, and existing tests for the area; they encode the
|
|
14
|
+
real contract.
|
|
15
|
+
2. Write goals, constraints, proposed structure, interfaces, and risks.
|
|
16
|
+
3. Name at least one alternative and why it was rejected.
|
|
17
|
+
4. Define ownership per component: what it owns, exposes, and must not do.
|
|
18
|
+
5. Mirror sibling code: same types, keys, constructors, and error shapes.
|
|
19
|
+
|
|
20
|
+
## Iron rules
|
|
21
|
+
|
|
22
|
+
- Smallest sufficient design; no speculative generality.
|
|
23
|
+
- Every interface names its errors, edge cases, and empty-state behavior.
|
|
24
|
+
- No new abstraction without two call sites or an explicit exception.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Docs Skill
|
|
2
|
+
|
|
3
|
+
Document what the code does, with links a reader can click to verify.
|
|
4
|
+
|
|
5
|
+
## When to use
|
|
6
|
+
|
|
7
|
+
New agents, orchestrators, skills, config keys, or behavior changes a user
|
|
8
|
+
must understand to operate the pack.
|
|
9
|
+
|
|
10
|
+
## Procedure
|
|
11
|
+
|
|
12
|
+
1. State the outcome first; keep prose short and factual.
|
|
13
|
+
2. Cover every behavior: happy path, errors, edge cases, and defaults.
|
|
14
|
+
3. Reference real local files as clickable `path:line` links.
|
|
15
|
+
4. Include the exact commands or gates the reader must run.
|
|
16
|
+
5. Distinguish verified facts from inferences; never fill gaps by inventing
|
|
17
|
+
details.
|
|
18
|
+
|
|
19
|
+
## Iron rules
|
|
20
|
+
|
|
21
|
+
- No documentation for code that does not exist.
|
|
22
|
+
- Every claim traces to a file, command output, or named source.
|
|
23
|
+
- Complete files only: no open markers, no stubs, no "coming soon".
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Harness Skill
|
|
2
|
+
|
|
3
|
+
Run work through the harness contract: typed steps in, verified waves out.
|
|
4
|
+
|
|
5
|
+
## When to use
|
|
6
|
+
|
|
7
|
+
Whenever an orchestrator runs steps: team, pipeline, ralph, ultraqa,
|
|
8
|
+
ultrawork, ralplan, advisor, autopilot, or deep-interview flows.
|
|
9
|
+
|
|
10
|
+
## Procedure
|
|
11
|
+
|
|
12
|
+
1. Represent work as typed steps: id, title, agent, files, verifyCommand.
|
|
13
|
+
2. Route steps through the orchestrator's `handleSteps`: it returns waves of
|
|
14
|
+
`parallel` or `sequence` plus a gate condition.
|
|
15
|
+
3. Execute waves in order; respect `sequence` strictly.
|
|
16
|
+
4. Apply the gate: pipeline needs verifyCommand exit 0, ultraqa needs zero
|
|
17
|
+
failures, team needs reviewer approval.
|
|
18
|
+
5. Report the gate result with observed output, not a summary of intent.
|
|
19
|
+
|
|
20
|
+
## Iron rules
|
|
21
|
+
|
|
22
|
+
- Never execute a step the harness did not schedule.
|
|
23
|
+
- Never mark a wave done while its gate is red.
|
|
24
|
+
- `spawnableAgents` is a closed list: only spawn agents it names.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Security Skill
|
|
2
|
+
|
|
3
|
+
Treat every input as untrusted until it is validated at the boundary.
|
|
4
|
+
|
|
5
|
+
## When to use
|
|
6
|
+
|
|
7
|
+
Any code that touches auth, secrets, user input, shell commands, file paths,
|
|
8
|
+
network output, or rendered HTML.
|
|
9
|
+
|
|
10
|
+
## Procedure
|
|
11
|
+
|
|
12
|
+
1. List the trust boundaries the change crosses (user input, env, network).
|
|
13
|
+
2. Validate at the boundary: allowlist values, bound lengths, reject the rest.
|
|
14
|
+
3. Never log, echo, or persist secrets; never interpolate untrusted input
|
|
15
|
+
into shell, SQL, or HTML without the codebase's escaper.
|
|
16
|
+
4. Fail closed: unknown or ambiguous input is rejected, not passed through.
|
|
17
|
+
5. Name residual risks explicitly in the final report.
|
|
18
|
+
|
|
19
|
+
## Iron rules
|
|
20
|
+
|
|
21
|
+
- No secrets in code, logs, tests, or governor output.
|
|
22
|
+
- No `any`-typed passthrough of untrusted data across a boundary.
|
|
23
|
+
- An unrecognized value in a protective module is dropped or transformed,
|
|
24
|
+
never passed through silently.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# TDD Skill
|
|
2
|
+
|
|
3
|
+
Write the failing test first, then the smallest implementation that passes it.
|
|
4
|
+
|
|
5
|
+
## When to use
|
|
6
|
+
|
|
7
|
+
Every behavior change, bug fix, or new feature. No production code without a
|
|
8
|
+
red test that reproduces the requirement.
|
|
9
|
+
|
|
10
|
+
## Procedure
|
|
11
|
+
|
|
12
|
+
1. Restate the requirement as one observable behavior.
|
|
13
|
+
2. Add or update a test that fails for exactly that reason; run it and read
|
|
14
|
+
the failure output.
|
|
15
|
+
3. Implement the smallest change that turns the test green.
|
|
16
|
+
4. Refactor while keeping the suite green; run the full affected test file.
|
|
17
|
+
5. For bug fixes, keep the regression test that failed before the fix.
|
|
18
|
+
|
|
19
|
+
## Iron rules
|
|
20
|
+
|
|
21
|
+
- Never write implementation before its test exists and fails.
|
|
22
|
+
- One behavior per test; name the test after the behavior.
|
|
23
|
+
- No commented-out tests, no skipped tests to force a green run.
|
|
24
|
+
- Real assertions only: no tests that pass without exercising the code.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Verify Skill
|
|
2
|
+
|
|
3
|
+
Prove the change works with the repository's own gates, not with assertions
|
|
4
|
+
about your own script.
|
|
5
|
+
|
|
6
|
+
## When to use
|
|
7
|
+
|
|
8
|
+
Before reporting any task done: after every edit, and after every
|
|
9
|
+
orchestrator wave that claims completion.
|
|
10
|
+
|
|
11
|
+
## Procedure
|
|
12
|
+
|
|
13
|
+
1. Find the configured gates first: package.json scripts, Makefile targets,
|
|
14
|
+
CI workflow, tsconfig, and any lint/typecheck config.
|
|
15
|
+
2. Run the narrow gate for the touched area (typecheck, focused tests).
|
|
16
|
+
3. Run the full relevant test file or package unmodified; never narrow a run
|
|
17
|
+
to exclude a failure.
|
|
18
|
+
4. Re-run your reproduction of the reported behavior against the real code.
|
|
19
|
+
5. Quote the observed command output; a clean-looking patch you never
|
|
20
|
+
executed is not evidence.
|
|
21
|
+
|
|
22
|
+
## Iron rules
|
|
23
|
+
|
|
24
|
+
- An independent oracle decides: repo tests, golden files, or a second
|
|
25
|
+
method. Your own script agreeing with itself proves nothing.
|
|
26
|
+
- A failing existing test is a requirement, not a stale artifact: fix the
|
|
27
|
+
change, never delete or weaken the test.
|
|
28
|
+
- Never claim success you did not watch pass in this session.
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "oh-my-muse",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Token-efficient agent pack runner for Muse Spark",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"muse",
|
|
7
|
+
"muse-spark",
|
|
8
|
+
"agents",
|
|
9
|
+
"orchestration",
|
|
10
|
+
"codebuff"
|
|
11
|
+
],
|
|
12
|
+
"author": "Javi",
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "git+https://github.com/javi/oh-my-muse.git"
|
|
16
|
+
},
|
|
17
|
+
"homepage": "https://github.com/javi/oh-my-muse#readme",
|
|
18
|
+
"bugs": {
|
|
19
|
+
"url": "https://github.com/javi/oh-my-muse/issues"
|
|
20
|
+
},
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"type": "module",
|
|
23
|
+
"bin": {
|
|
24
|
+
"omm": "bin/omm.mjs"
|
|
25
|
+
},
|
|
26
|
+
"files": [
|
|
27
|
+
"bin/",
|
|
28
|
+
"hooks/",
|
|
29
|
+
"pack/",
|
|
30
|
+
"src/",
|
|
31
|
+
"types/",
|
|
32
|
+
"models.json",
|
|
33
|
+
"omm.jsonc",
|
|
34
|
+
"README.md",
|
|
35
|
+
"LICENSE"
|
|
36
|
+
],
|
|
37
|
+
"engines": {
|
|
38
|
+
"node": ">=20"
|
|
39
|
+
},
|
|
40
|
+
"scripts": {
|
|
41
|
+
"typecheck": "tsc --noEmit",
|
|
42
|
+
"test": "node --test test/cli.test.mjs test/e2e.test.mjs",
|
|
43
|
+
"smoke": "node test/smoke.mjs"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"typescript": "^5.6.0"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Design Rules
|
|
2
|
+
|
|
3
|
+
Smallest sufficient design, stated trade-offs, verified behavior.
|
|
4
|
+
|
|
5
|
+
## Rules
|
|
6
|
+
|
|
7
|
+
1. Derive the contract from the repo: callers, types, and existing tests
|
|
8
|
+
outrank any summary. Match sibling shapes; reuse helpers.
|
|
9
|
+
2. One behavior per unit; every unit names its errors, edge cases, empty
|
|
10
|
+
states, and defaults.
|
|
11
|
+
3. No speculative generality: no new abstraction without two call sites.
|
|
12
|
+
4. State the rejected alternative and why it lost.
|
|
13
|
+
5. Concurrency is explicit: parallel only with no shared mutable state;
|
|
14
|
+
same-file edits are serialized.
|
|
15
|
+
6. Fail closed on protective paths: unknown input is rejected, never passed
|
|
16
|
+
through.
|
|
17
|
+
|
|
18
|
+
## Anti-slop iron rules
|
|
19
|
+
|
|
20
|
+
1. No open task markers or stub text in shipped files.
|
|
21
|
+
2. No dead code, no commented-out blocks, no unused exports kept "just in
|
|
22
|
+
case".
|
|
23
|
+
3. No invented APIs: every import, command, and config key must resolve in
|
|
24
|
+
the repo or its declared dependencies.
|
|
25
|
+
4. No long chain-of-thought in comments; comments state the why in one line.
|
|
26
|
+
5. Findings first, evidence second: every claim cites a file, a command
|
|
27
|
+
output, or a named source; gaps are labeled unresolved, never papered
|
|
28
|
+
over.
|
|
29
|
+
6. Done means the repo's own gates pass unmodified in this session.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Harness Contract
|
|
2
|
+
|
|
3
|
+
The harness is the only path from steps to execution. Typed steps in,
|
|
4
|
+
verified waves out.
|
|
5
|
+
|
|
6
|
+
## Step shape
|
|
7
|
+
|
|
8
|
+
Each step carries `id`, `title`, and optionally `agent`, `files`, and
|
|
9
|
+
`verifyCommand`. Every orchestrator declares `spawnableAgents`, a closed
|
|
10
|
+
list: it may only schedule agents on that list.
|
|
11
|
+
|
|
12
|
+
## Wave semantics
|
|
13
|
+
|
|
14
|
+
`handleSteps(steps)` returns `{ waves, gate }`. A wave is `{ mode, steps,
|
|
15
|
+
note }` where `mode` is `parallel` or `sequence`.
|
|
16
|
+
|
|
17
|
+
- `parallel`: all steps in the wave may run concurrently.
|
|
18
|
+
- `sequence`: steps run strictly one at a time, in order.
|
|
19
|
+
- Waves run in order; a later wave never starts while an earlier wave is red.
|
|
20
|
+
|
|
21
|
+
## Gates
|
|
22
|
+
|
|
23
|
+
- muse-pipeline: `verifyCommand` exit 0 after every step.
|
|
24
|
+
- muse-ultraqa: zero failures across all checks.
|
|
25
|
+
- muse-team: reviewer verdict is approve.
|
|
26
|
+
- muse-ralph: single pass/fail check per loop iteration.
|
|
27
|
+
- muse-ralplan: critique-and-merge completes before execution.
|
|
28
|
+
- muse-advisor: reconciled decision cites all three advisors.
|
|
29
|
+
- muse-autopilot: driver owns the final diff.
|
|
30
|
+
- muse-deep-interview: spec complete before implementation.
|
|
31
|
+
|
|
32
|
+
## Anti-slop iron rules
|
|
33
|
+
|
|
34
|
+
1. Complete files only: no open markers, no stubs presented as done.
|
|
35
|
+
2. The oracle must be independent: repo tests, golden files, or a second
|
|
36
|
+
method. Self-agreement proves nothing.
|
|
37
|
+
3. Never narrow a test run to exclude a failure; a red existing test is a
|
|
38
|
+
requirement.
|
|
39
|
+
4. Never claim a result you did not watch occur in this session.
|
|
40
|
+
5. Tiers are the literal strings `budget`, `balanced`, `premium`; models
|
|
41
|
+
resolve through `TIER_MODELS` and never override the tier contract.
|
|
42
|
+
6. Node >= 20, ESM only (`"type": "module"`); absolute paths in configs.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type Tier = "budget" | "balanced" | "premium";
|
|
2
|
+
|
|
3
|
+
export const TIER_MODELS: Record<Tier, string> = {
|
|
4
|
+
budget: "muse-spark-fast",
|
|
5
|
+
balanced: "muse-spark",
|
|
6
|
+
premium: "muse-spark-reasoning",
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export interface AgentDefinition {
|
|
10
|
+
name: string;
|
|
11
|
+
description: string;
|
|
12
|
+
tier: Tier;
|
|
13
|
+
model?: string;
|
|
14
|
+
systemPrompt: string;
|
|
15
|
+
tools?: string[];
|
|
16
|
+
maxTokens?: number;
|
|
17
|
+
temperature?: number;
|
|
18
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Tier } from "./agent-definition.js";
|
|
2
|
+
|
|
3
|
+
export interface OrchestratorStepInput {
|
|
4
|
+
id: string;
|
|
5
|
+
title: string;
|
|
6
|
+
agent?: string;
|
|
7
|
+
files?: string[];
|
|
8
|
+
verifyCommand?: string;
|
|
9
|
+
done?: boolean;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface OrchestratorWave {
|
|
13
|
+
mode: "parallel" | "sequence";
|
|
14
|
+
steps: OrchestratorStepInput[];
|
|
15
|
+
note: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface OrchestratorPlan {
|
|
19
|
+
waves: OrchestratorWave[];
|
|
20
|
+
gate: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export type HandleSteps = (steps: OrchestratorStepInput[]) => OrchestratorPlan;
|
|
24
|
+
|
|
25
|
+
export interface OrchestratorDefinition {
|
|
26
|
+
kind: "orchestrator";
|
|
27
|
+
name: string;
|
|
28
|
+
description: string;
|
|
29
|
+
tier: Tier;
|
|
30
|
+
model?: string;
|
|
31
|
+
systemPrompt: string;
|
|
32
|
+
tools?: string[];
|
|
33
|
+
maxTokens?: number;
|
|
34
|
+
temperature?: number;
|
|
35
|
+
spawnableAgents: string[];
|
|
36
|
+
handleSteps: HandleSteps;
|
|
37
|
+
}
|