@voxslopuli/openagentsy 0.0.0-stage → 0.2.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 +674 -0
- package/README.md +21 -2
- package/dist/adapter-dependency.test.d.ts +2 -0
- package/dist/adapter-dependency.test.d.ts.map +1 -0
- package/dist/adapter-dependency.test.js +51 -0
- package/dist/adapter-dependency.test.js.map +1 -0
- package/dist/commands/approve.d.ts +63 -0
- package/dist/commands/approve.d.ts.map +1 -0
- package/dist/commands/approve.js +218 -0
- package/dist/commands/approve.js.map +1 -0
- package/dist/commands/approve.test.d.ts +2 -0
- package/dist/commands/approve.test.d.ts.map +1 -0
- package/dist/commands/approve.test.js +219 -0
- package/dist/commands/approve.test.js.map +1 -0
- package/dist/commands/audit.d.ts +74 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +230 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/audit.test.d.ts +2 -0
- package/dist/commands/audit.test.d.ts.map +1 -0
- package/dist/commands/audit.test.js +194 -0
- package/dist/commands/audit.test.js.map +1 -0
- package/dist/commands/board.d.ts +33 -0
- package/dist/commands/board.d.ts.map +1 -0
- package/dist/commands/board.js +65 -0
- package/dist/commands/board.js.map +1 -0
- package/dist/commands/build.d.ts +17 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +145 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/conformance.d.ts +31 -0
- package/dist/commands/conformance.d.ts.map +1 -0
- package/dist/commands/conformance.js +57 -0
- package/dist/commands/conformance.js.map +1 -0
- package/dist/commands/conformance.test.d.ts +2 -0
- package/dist/commands/conformance.test.d.ts.map +1 -0
- package/dist/commands/conformance.test.js +74 -0
- package/dist/commands/conformance.test.js.map +1 -0
- package/dist/commands/doctor.d.ts +132 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +768 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/doctor.test.d.ts +2 -0
- package/dist/commands/doctor.test.d.ts.map +1 -0
- package/dist/commands/doctor.test.js +329 -0
- package/dist/commands/doctor.test.js.map +1 -0
- package/dist/commands/ledger.d.ts +109 -0
- package/dist/commands/ledger.d.ts.map +1 -0
- package/dist/commands/ledger.js +286 -0
- package/dist/commands/ledger.js.map +1 -0
- package/dist/commands/ledger.test.d.ts +2 -0
- package/dist/commands/ledger.test.d.ts.map +1 -0
- package/dist/commands/ledger.test.js +238 -0
- package/dist/commands/ledger.test.js.map +1 -0
- package/dist/commands/lessons.d.ts +73 -0
- package/dist/commands/lessons.d.ts.map +1 -0
- package/dist/commands/lessons.js +97 -0
- package/dist/commands/lessons.js.map +1 -0
- package/dist/commands/lessons.test.d.ts +2 -0
- package/dist/commands/lessons.test.d.ts.map +1 -0
- package/dist/commands/lessons.test.js +146 -0
- package/dist/commands/lessons.test.js.map +1 -0
- package/dist/commands/models.d.ts +49 -0
- package/dist/commands/models.d.ts.map +1 -0
- package/dist/commands/models.js +125 -0
- package/dist/commands/models.js.map +1 -0
- package/dist/commands/report.d.ts +57 -0
- package/dist/commands/report.d.ts.map +1 -0
- package/dist/commands/report.js +164 -0
- package/dist/commands/report.js.map +1 -0
- package/dist/commands/report.test.d.ts +2 -0
- package/dist/commands/report.test.d.ts.map +1 -0
- package/dist/commands/report.test.js +294 -0
- package/dist/commands/report.test.js.map +1 -0
- package/dist/commands/scope.d.ts +34 -0
- package/dist/commands/scope.d.ts.map +1 -0
- package/dist/commands/scope.js +78 -0
- package/dist/commands/scope.js.map +1 -0
- package/dist/commands/scope.test.d.ts +2 -0
- package/dist/commands/scope.test.d.ts.map +1 -0
- package/dist/commands/scope.test.js +98 -0
- package/dist/commands/scope.test.js.map +1 -0
- package/dist/commands/setup.d.ts +31 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +93 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/waivers.d.ts +47 -0
- package/dist/commands/waivers.d.ts.map +1 -0
- package/dist/commands/waivers.js +68 -0
- package/dist/commands/waivers.js.map +1 -0
- package/dist/commands/waivers.test.d.ts +2 -0
- package/dist/commands/waivers.test.d.ts.map +1 -0
- package/dist/commands/waivers.test.js +64 -0
- package/dist/commands/waivers.test.js.map +1 -0
- package/dist/generate/agent.d.ts +19 -0
- package/dist/generate/agent.d.ts.map +1 -0
- package/dist/generate/agent.js +35 -0
- package/dist/generate/agent.js.map +1 -0
- package/dist/generate/agent.test.d.ts +2 -0
- package/dist/generate/agent.test.d.ts.map +1 -0
- package/dist/generate/agent.test.js +245 -0
- package/dist/generate/agent.test.js.map +1 -0
- package/dist/generate/commands.d.ts +15 -0
- package/dist/generate/commands.d.ts.map +1 -0
- package/dist/generate/commands.js +59 -0
- package/dist/generate/commands.js.map +1 -0
- package/dist/generate/lock.d.ts +18 -0
- package/dist/generate/lock.d.ts.map +1 -0
- package/dist/generate/lock.js +26 -0
- package/dist/generate/lock.js.map +1 -0
- package/dist/generate/prompt.d.ts +11 -0
- package/dist/generate/prompt.d.ts.map +1 -0
- package/dist/generate/prompt.js +114 -0
- package/dist/generate/prompt.js.map +1 -0
- package/dist/generate/prompt.test.d.ts +2 -0
- package/dist/generate/prompt.test.d.ts.map +1 -0
- package/dist/generate/prompt.test.js +59 -0
- package/dist/generate/prompt.test.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +448 -0
- package/dist/index.js.map +1 -0
- package/dist/index.test.d.ts +2 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/index.test.js +237 -0
- package/dist/index.test.js.map +1 -0
- package/dist/opencode.d.ts +29 -0
- package/dist/opencode.d.ts.map +1 -0
- package/dist/opencode.js +125 -0
- package/dist/opencode.js.map +1 -0
- package/dist/plugin-bundle.test.d.ts +2 -0
- package/dist/plugin-bundle.test.d.ts.map +1 -0
- package/dist/plugin-bundle.test.js +43 -0
- package/dist/plugin-bundle.test.js.map +1 -0
- package/dist/plugin.d.ts +11 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +46 -0
- package/dist/plugin.js.map +1 -0
- package/dist/quality-skills.test.d.ts +2 -0
- package/dist/quality-skills.test.d.ts.map +1 -0
- package/dist/quality-skills.test.js +141 -0
- package/dist/quality-skills.test.js.map +1 -0
- package/dist/report/footprint.d.ts +12 -0
- package/dist/report/footprint.d.ts.map +1 -0
- package/dist/report/footprint.js +121 -0
- package/dist/report/footprint.js.map +1 -0
- package/dist/report/ledger.d.ts +27 -0
- package/dist/report/ledger.d.ts.map +1 -0
- package/dist/report/ledger.js +197 -0
- package/dist/report/ledger.js.map +1 -0
- package/dist/report/oversight.d.ts +21 -0
- package/dist/report/oversight.d.ts.map +1 -0
- package/dist/report/oversight.js +146 -0
- package/dist/report/oversight.js.map +1 -0
- package/dist/report/policy-firing.test.d.ts +2 -0
- package/dist/report/policy-firing.test.d.ts.map +1 -0
- package/dist/report/policy-firing.test.js +68 -0
- package/dist/report/policy-firing.test.js.map +1 -0
- package/dist/report/scope.d.ts +64 -0
- package/dist/report/scope.d.ts.map +1 -0
- package/dist/report/scope.js +146 -0
- package/dist/report/scope.js.map +1 -0
- package/dist/who.d.ts +9 -0
- package/dist/who.d.ts.map +1 -0
- package/dist/who.js +11 -0
- package/dist/who.js.map +1 -0
- package/package.json +54 -4
- package/plugin/openagentsy.js +39478 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAkFrD,uEAAuE;AACvE,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC5B,CAAC;AA6TF;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG;IAAE,SAAS,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC;AAyEvD,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6DxF"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { readFileSync } from 'node:fs';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
4
|
+
import { parseArgs } from 'node:util';
|
|
5
|
+
import { resolveProjectRoots } from '@openagentsy/core';
|
|
6
|
+
import { formatApproveResult, runApprove } from './commands/approve.js';
|
|
7
|
+
import { formatBoard, runBoard } from './commands/board.js';
|
|
8
|
+
import { runBuild } from './commands/build.js';
|
|
9
|
+
import { formatConformanceReport, runConformance } from './commands/conformance.js';
|
|
10
|
+
import { formatDoctorReport, runDoctor } from './commands/doctor.js';
|
|
11
|
+
import { formatLedgerReport, formatOutcomesReport, formatScanRevertsReport, formatWasteReport, runLedger, runLedgerOutcomes, runLedgerScanReverts, runLedgerWaste, } from './commands/ledger.js';
|
|
12
|
+
import { formatLessonDecision, formatLessonsReport, runLessonDecision, runLessons, } from './commands/lessons.js';
|
|
13
|
+
import { runModels } from './commands/models.js';
|
|
14
|
+
import { ethicalReportAsJson, formatEthicalReport, runEthicalReport } from './commands/report.js';
|
|
15
|
+
import { formatScope, runScope } from './commands/scope.js';
|
|
16
|
+
import { runSetup } from './commands/setup.js';
|
|
17
|
+
const USAGE = `openagentsy <command> [options]
|
|
18
|
+
|
|
19
|
+
Two roots: the directory the command runs in, and the state root of the
|
|
20
|
+
project. The state root is the main repository root, so a command run in a
|
|
21
|
+
linked worktree reads the board, the ledger and the lock of the project.
|
|
22
|
+
|
|
23
|
+
Commands:
|
|
24
|
+
audit Report the quality findings of the change, and say which path ran
|
|
25
|
+
board Show the records, leases and budgets, for a human to read
|
|
26
|
+
build Generate the agent, command and skill files
|
|
27
|
+
conformance Report what is proven, observed or unverified
|
|
28
|
+
doctor Report what is installed, where it came from, and what is missing
|
|
29
|
+
ledger Show the tokens, the cost and the waste of the work
|
|
30
|
+
ledger export Write the counters of the ledger as JSON
|
|
31
|
+
ledger waste Find the waste that can be found, and say what the waste is
|
|
32
|
+
ledger scan-reverts Find the code that was written and then taken back
|
|
33
|
+
ledger outcomes Find the commits that name a task, and the Refs trailers they carry
|
|
34
|
+
lessons Show the lessons that are waiting for a decision
|
|
35
|
+
lesson <id> <act> Decide a lesson: validate, apply, reject or observe
|
|
36
|
+
waive <ruleId> <path> <reason>
|
|
37
|
+
Record a quality waiver, as a person
|
|
38
|
+
approve <callID> Grant one call the permission it asked for
|
|
39
|
+
setup Write the OpenCode config for OpenAgentsy
|
|
40
|
+
models init Pick a model for every role and write the model lock file
|
|
41
|
+
models refresh Re-pick the models with the providers the lock records, and write the lock file
|
|
42
|
+
models switch Switch the provider, re-pick the models, and write the lock file
|
|
43
|
+
report --ethical Report what the run cost, and what it was worth
|
|
44
|
+
scope [role] Print the scope declaration of a role, or of every role
|
|
45
|
+
Options:
|
|
46
|
+
--root <dir> Project directory (default: current directory)
|
|
47
|
+
--all Audit the whole project instead of the changed files
|
|
48
|
+
--base <ref> The ref the changed files are measured against (default: HEAD)
|
|
49
|
+
--since <when> How far back to look (default: 30 days ago)
|
|
50
|
+
--session <id> Report one session, and the subagents that rolled up into it
|
|
51
|
+
--bean <id> Report one bean: the rows whose task is that bean
|
|
52
|
+
--check Exit nonzero when a floor finding is open
|
|
53
|
+
--ethical Report the run in the form of §12
|
|
54
|
+
--out <dir> Output directory for build (default: <root>/.opencode)
|
|
55
|
+
--roles <file> Roles file (default: <root>/roles.yaml)
|
|
56
|
+
--lock <file> Model lock file (default: <state root>/openagentsy.models.lock.json)
|
|
57
|
+
--config <file> Config file for setup (default: <root>/opencode.json)
|
|
58
|
+
--providers <list> Providers for models init, comma separated
|
|
59
|
+
--prefer-flash Take the flash variant of the family a role would get
|
|
60
|
+
--allow-training Allow models whose terms train on prompts
|
|
61
|
+
--allow-retention Allow models that are not zero data retention
|
|
62
|
+
--key <key> BenchLM key, for the keyed REST API
|
|
63
|
+
--yes Write the lock file without asking
|
|
64
|
+
--json Write the output as JSON (ledger, conformance)
|
|
65
|
+
--ttl <ms> How long a grant lives (default: 15 minutes, max: 1 day)
|
|
66
|
+
--dry-run Print what setup would write without writing it
|
|
67
|
+
--magic-context Turn OpenCode's compaction off, for a project with a
|
|
68
|
+
memory integration that shrinks the context itself
|
|
69
|
+
-h, --help Show this help
|
|
70
|
+
`;
|
|
71
|
+
async function buildCommand(roots, values) {
|
|
72
|
+
const result = await runBuild({
|
|
73
|
+
workspace: roots.workspace,
|
|
74
|
+
stateRoot: roots.stateRoot,
|
|
75
|
+
...(values.out ? { outDir: values.out } : {}),
|
|
76
|
+
...(values.roles ? { rolesPath: values.roles } : {}),
|
|
77
|
+
...(values.lock ? { lockPath: values.lock } : {}),
|
|
78
|
+
});
|
|
79
|
+
process.stdout.write('built\n');
|
|
80
|
+
process.stdout.write(` agents ${result.agents.length}\n`);
|
|
81
|
+
process.stdout.write(` commands ${result.commands.join(', ')}\n`);
|
|
82
|
+
process.stdout.write(` skills ${result.skills.join(', ') || 'none'}\n`);
|
|
83
|
+
for (const warning of result.warnings) {
|
|
84
|
+
process.stdout.write(` warning: ${warning}\n`);
|
|
85
|
+
}
|
|
86
|
+
return 0;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* The audit of the change.
|
|
90
|
+
*
|
|
91
|
+
* The command is loaded on demand. The audit runs the whole rule set, and
|
|
92
|
+
* the whole rule set carries the TypeScript compiler; the other commands
|
|
93
|
+
* must not pay for it.
|
|
94
|
+
*/
|
|
95
|
+
async function auditCommand(roots, values) {
|
|
96
|
+
const { formatAuditReport, runAudit } = await import('./commands/audit.js');
|
|
97
|
+
const report = await runAudit(roots, {
|
|
98
|
+
scope: values.all === true ? 'all' : 'changed',
|
|
99
|
+
...(values.base === undefined ? {} : { base: values.base }),
|
|
100
|
+
});
|
|
101
|
+
process.stdout.write(formatAuditReport(report));
|
|
102
|
+
return report.exitCode;
|
|
103
|
+
}
|
|
104
|
+
async function boardCommand(roots) {
|
|
105
|
+
const view = await runBoard(roots.stateRoot);
|
|
106
|
+
process.stdout.write(`${formatBoard(view)}\n`);
|
|
107
|
+
return 0;
|
|
108
|
+
}
|
|
109
|
+
async function doctorCommand(roots) {
|
|
110
|
+
const report = await runDoctor(roots);
|
|
111
|
+
process.stdout.write(formatDoctorReport(report));
|
|
112
|
+
return 0;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* The conformance report.
|
|
116
|
+
*
|
|
117
|
+
* The report says what is proven, observed or unverified, one capability at
|
|
118
|
+
* a time, and it shows the evidence of an observed capability.
|
|
119
|
+
*/
|
|
120
|
+
async function conformanceCommand(roots, values) {
|
|
121
|
+
const report = await runConformance(roots);
|
|
122
|
+
if (values.json === true) {
|
|
123
|
+
process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
|
|
124
|
+
return 0;
|
|
125
|
+
}
|
|
126
|
+
process.stdout.write(formatConformanceReport(report));
|
|
127
|
+
return 0;
|
|
128
|
+
}
|
|
129
|
+
async function ledgerCommand(roots, values, positionals) {
|
|
130
|
+
const sub = positionals[1];
|
|
131
|
+
const since = values.since;
|
|
132
|
+
if (sub === 'scan-reverts') {
|
|
133
|
+
const report = await runLedgerScanReverts(roots, since === undefined ? {} : { since });
|
|
134
|
+
process.stdout.write(formatScanRevertsReport(report));
|
|
135
|
+
return 0;
|
|
136
|
+
}
|
|
137
|
+
if (sub === 'outcomes') {
|
|
138
|
+
const report = await runLedgerOutcomes(roots, since === undefined ? {} : { since });
|
|
139
|
+
process.stdout.write(formatOutcomesReport(report));
|
|
140
|
+
return 0;
|
|
141
|
+
}
|
|
142
|
+
if (sub === 'waste') {
|
|
143
|
+
const report = await runLedgerWaste(roots.stateRoot, since === undefined ? {} : { since });
|
|
144
|
+
process.stdout.write(formatWasteReport(report));
|
|
145
|
+
return 0;
|
|
146
|
+
}
|
|
147
|
+
if (sub !== undefined && sub !== 'export') {
|
|
148
|
+
process.stderr.write(`unknown ledger subcommand: ${sub}\n`);
|
|
149
|
+
return 1;
|
|
150
|
+
}
|
|
151
|
+
const report = await runLedger(roots.stateRoot);
|
|
152
|
+
if (sub === 'export' || values.json === true) {
|
|
153
|
+
process.stdout.write(`${JSON.stringify(report.counters, null, 2)}\n`);
|
|
154
|
+
return 0;
|
|
155
|
+
}
|
|
156
|
+
process.stdout.write(formatLedgerReport(report));
|
|
157
|
+
return 0;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* The ethical report (§12).
|
|
161
|
+
*
|
|
162
|
+
* The report is local: it reads the ledger, the board and the stores of the
|
|
163
|
+
* state root, it writes nothing, and it reaches no network. The `--check`
|
|
164
|
+
* flag makes it a gate, and the exit code is the gate's answer.
|
|
165
|
+
*/
|
|
166
|
+
async function reportCommand(roots, values) {
|
|
167
|
+
const report = await runEthicalReport(roots, {
|
|
168
|
+
...(values.session === undefined ? {} : { session: values.session }),
|
|
169
|
+
...(values.bean === undefined ? {} : { bean: values.bean }),
|
|
170
|
+
...(values.since === undefined ? {} : { since: values.since }),
|
|
171
|
+
...(values.check === true ? { check: true } : {}),
|
|
172
|
+
});
|
|
173
|
+
if (values.json === true) {
|
|
174
|
+
process.stdout.write(ethicalReportAsJson(report));
|
|
175
|
+
return report.exitCode;
|
|
176
|
+
}
|
|
177
|
+
process.stdout.write(formatEthicalReport(report));
|
|
178
|
+
return report.exitCode;
|
|
179
|
+
}
|
|
180
|
+
async function setupCommand(roots, values) {
|
|
181
|
+
const result = await runSetup({
|
|
182
|
+
root: roots.workspace,
|
|
183
|
+
...(values.config ? { configPath: values.config } : {}),
|
|
184
|
+
...(values['dry-run'] ? { dryRun: true } : {}),
|
|
185
|
+
...(values['magic-context'] ? { magicContext: true } : {}),
|
|
186
|
+
});
|
|
187
|
+
process.stdout.write(`${result.dryRun ? 'would write' : 'wrote'} ${result.configPath}\n`);
|
|
188
|
+
for (const key of result.changed) {
|
|
189
|
+
process.stdout.write(` ${key}\n`);
|
|
190
|
+
}
|
|
191
|
+
if (result.merged && result.merged.length > 0) {
|
|
192
|
+
process.stdout.write(` OpenCode merges this with ${result.merged.join(', ')}, which was not read. Review it after setup.\n`);
|
|
193
|
+
}
|
|
194
|
+
if (result.pluginPath) {
|
|
195
|
+
process.stdout.write(` ${result.dryRun ? 'would install' : 'installed'} ${result.pluginPath}\n`);
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
process.stdout.write(' no plugin bundle found, run: bun run build\n');
|
|
199
|
+
}
|
|
200
|
+
if (result.dryRun) {
|
|
201
|
+
process.stdout.write('\n');
|
|
202
|
+
process.stdout.write(result.content);
|
|
203
|
+
}
|
|
204
|
+
return 0;
|
|
205
|
+
}
|
|
206
|
+
/** The model report, one role at a time. */
|
|
207
|
+
function reportModels(changes, rejected, failures) {
|
|
208
|
+
process.stdout.write(`model selection for ${changes.length} roles\n`);
|
|
209
|
+
for (const change of changes) {
|
|
210
|
+
const from = change.from !== undefined && change.from !== change.to ? `${change.from} -> ` : '';
|
|
211
|
+
process.stdout.write(` ${change.role.padEnd(12)}${from}${change.to}\n`);
|
|
212
|
+
process.stdout.write(` ${change.note}\n`);
|
|
213
|
+
for (const rejection of (rejected[change.role] ?? []).slice(0, 3)) {
|
|
214
|
+
process.stdout.write(` not ${rejection.openCodeId}: ${rejection.reason}\n`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
for (const [role, reason] of Object.entries(failures)) {
|
|
218
|
+
process.stdout.write(` ${role.padEnd(12)}no model available\n`);
|
|
219
|
+
process.stdout.write(` ${reason}\n`);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/** What the switch touches besides the lock file. */
|
|
223
|
+
function reportTouches(touches) {
|
|
224
|
+
process.stdout.write('\nthe switch touches more than the lock:\n');
|
|
225
|
+
process.stdout.write(` the agent files are stale: run ${touches.rebuild} to regenerate them\n`);
|
|
226
|
+
process.stdout.write(` CI takes its model from the lock: the next run uses ${touches.providers.join(', ')}\n`);
|
|
227
|
+
if (touches.keys.length === 0) {
|
|
228
|
+
process.stdout.write(' the provider needs no key\n');
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
const subject = touches.keys.length === 1 ? 'the provider needs its key' : 'the providers need their keys';
|
|
232
|
+
process.stdout.write(` ${subject}: ${touches.keys.join(', ')}, in the auth store locally and as a CI secret of the same name\n`);
|
|
233
|
+
}
|
|
234
|
+
async function modelsCommand(roots, values, positionals, options) {
|
|
235
|
+
const sub = positionals[1] ?? 'init';
|
|
236
|
+
if (sub !== 'init' && sub !== 'refresh' && sub !== 'switch') {
|
|
237
|
+
process.stderr.write(`unknown models subcommand: ${sub}\n`);
|
|
238
|
+
return 1;
|
|
239
|
+
}
|
|
240
|
+
// The providers come from the positionals and from the flag, so both
|
|
241
|
+
// `models switch ollama-cloud` and `models switch --providers ollama-cloud`
|
|
242
|
+
// name the provider.
|
|
243
|
+
const requested = [...positionals.slice(2), ...(values.providers?.split(',') ?? [])];
|
|
244
|
+
const result = await runModels({
|
|
245
|
+
workspace: roots.workspace,
|
|
246
|
+
stateRoot: roots.stateRoot,
|
|
247
|
+
mode: sub,
|
|
248
|
+
providers: requested,
|
|
249
|
+
...(values['prefer-flash'] ? { preferFlash: true } : {}),
|
|
250
|
+
...(values['allow-training'] ? { allowTraining: true } : {}),
|
|
251
|
+
...(values['allow-retention'] ? { allowRetention: true } : {}),
|
|
252
|
+
...(values.key ? { key: values.key } : {}),
|
|
253
|
+
...(values.yes ? { yes: true } : {}),
|
|
254
|
+
...(options.fetchImpl ? { fetchImpl: options.fetchImpl } : {}),
|
|
255
|
+
});
|
|
256
|
+
reportModels(result.changes, result.rejected, result.failures);
|
|
257
|
+
if (result.touches) {
|
|
258
|
+
reportTouches(result.touches);
|
|
259
|
+
}
|
|
260
|
+
process.stdout.write(result.written
|
|
261
|
+
? `\nwrote ${result.path}\n`
|
|
262
|
+
: `\nnot written, pass --yes to write ${result.path}\n`);
|
|
263
|
+
return 0;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* The lessons that are waiting for a decision.
|
|
267
|
+
*/
|
|
268
|
+
async function lessonsCommand(roots) {
|
|
269
|
+
const report = await runLessons(roots.stateRoot);
|
|
270
|
+
process.stdout.write(formatLessonsReport(report));
|
|
271
|
+
return 0;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* A decision about one lesson.
|
|
275
|
+
*
|
|
276
|
+
* The person running the command is the decider: a lesson changes state
|
|
277
|
+
* only when a person says so.
|
|
278
|
+
*/
|
|
279
|
+
async function lessonCommand(roots, _values, positionals) {
|
|
280
|
+
const id = positionals[1];
|
|
281
|
+
const action = positionals[2];
|
|
282
|
+
if (id === undefined || action === undefined) {
|
|
283
|
+
process.stderr.write('usage: openagentsy lesson <id> <validate|apply|reject|observe>\n');
|
|
284
|
+
return 1;
|
|
285
|
+
}
|
|
286
|
+
const report = await runLessonDecision(roots.stateRoot, id, action);
|
|
287
|
+
process.stdout.write(formatLessonDecision(report));
|
|
288
|
+
return report.ok ? 0 : 1;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Record a quality waiver.
|
|
292
|
+
*
|
|
293
|
+
* The person running the command is the decider, and the command is the
|
|
294
|
+
* way a waiver is recorded: the tool the board server registers is denied
|
|
295
|
+
* to every agent role by the permission map, so an agent may propose a
|
|
296
|
+
* waiver in chat and never record one.
|
|
297
|
+
*
|
|
298
|
+
* The command is loaded on demand. The waiver check asks the whole rule
|
|
299
|
+
* set whether a rule may be waived, and the whole rule set carries the
|
|
300
|
+
* TypeScript compiler; the other commands must not pay for it.
|
|
301
|
+
*/
|
|
302
|
+
async function waiveCommand(roots, _values, positionals) {
|
|
303
|
+
const ruleId = positionals[1];
|
|
304
|
+
const path = positionals[2];
|
|
305
|
+
const reason = positionals.slice(3).join(' ');
|
|
306
|
+
if (ruleId === undefined || path === undefined || reason === '') {
|
|
307
|
+
process.stderr.write('usage: openagentsy waive <ruleId> <path> "<reason>"\n');
|
|
308
|
+
return 1;
|
|
309
|
+
}
|
|
310
|
+
const { formatWaiver, runWaiver } = await import('./commands/waivers.js');
|
|
311
|
+
const report = await runWaiver(roots.stateRoot, ruleId, path, reason);
|
|
312
|
+
process.stdout.write(formatWaiver(report));
|
|
313
|
+
return report.ok ? 0 : 1;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Grant one call the permission it asked for.
|
|
317
|
+
*/
|
|
318
|
+
async function approveCommand(roots, values, positionals) {
|
|
319
|
+
const result = await runApprove({
|
|
320
|
+
stateRoot: roots.stateRoot,
|
|
321
|
+
...(positionals[1] === undefined ? {} : { callID: positionals[1] }),
|
|
322
|
+
...(values.ttl === undefined ? {} : { ttl: values.ttl }),
|
|
323
|
+
});
|
|
324
|
+
process.stdout.write(formatApproveResult(result));
|
|
325
|
+
return result.ok ? 0 : 1;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* The scope declarations of the roles (§22.3).
|
|
329
|
+
*
|
|
330
|
+
* The command is a person's: the declarations are there to be read, and the
|
|
331
|
+
* refusal a role makes is built from the same text.
|
|
332
|
+
*/
|
|
333
|
+
async function scopeCommand(_roots, _values, positionals) {
|
|
334
|
+
const report = runScope(positionals[1]);
|
|
335
|
+
if (report.unknownRole !== undefined) {
|
|
336
|
+
process.stderr.write(formatScope(report));
|
|
337
|
+
return 1;
|
|
338
|
+
}
|
|
339
|
+
process.stdout.write(formatScope(report));
|
|
340
|
+
return 0;
|
|
341
|
+
}
|
|
342
|
+
/** The command table. One entry per command, so the dispatch is a lookup. */
|
|
343
|
+
const COMMANDS = {
|
|
344
|
+
build: buildCommand,
|
|
345
|
+
audit: auditCommand,
|
|
346
|
+
board: boardCommand,
|
|
347
|
+
conformance: conformanceCommand,
|
|
348
|
+
doctor: doctorCommand,
|
|
349
|
+
ledger: ledgerCommand,
|
|
350
|
+
lessons: lessonsCommand,
|
|
351
|
+
lesson: lessonCommand,
|
|
352
|
+
waive: waiveCommand,
|
|
353
|
+
approve: approveCommand,
|
|
354
|
+
setup: setupCommand,
|
|
355
|
+
models: modelsCommand,
|
|
356
|
+
report: reportCommand,
|
|
357
|
+
scope: scopeCommand,
|
|
358
|
+
};
|
|
359
|
+
/**
|
|
360
|
+
* Run the CLI.
|
|
361
|
+
*
|
|
362
|
+
* The commands are a table and the options are parsed in one place, so this
|
|
363
|
+
* function stays small enough to read.
|
|
364
|
+
*/
|
|
365
|
+
/**
|
|
366
|
+
* The version this package carries.
|
|
367
|
+
*
|
|
368
|
+
* The manifest is the record, and a literal in the source goes stale the
|
|
369
|
+
* moment the release machinery bumps it. The manifest sits one directory
|
|
370
|
+
* above the build output, and the file is read at the point where the
|
|
371
|
+
* version is needed, so a package that cannot find it says so rather than
|
|
372
|
+
* naming a version that does not exist.
|
|
373
|
+
*/
|
|
374
|
+
function packageVersion() {
|
|
375
|
+
try {
|
|
376
|
+
const manifest = new URL('../package.json', import.meta.url);
|
|
377
|
+
const parsed = JSON.parse(readFileSync(manifest, 'utf8'));
|
|
378
|
+
return parsed.version ?? '0.0.0';
|
|
379
|
+
}
|
|
380
|
+
catch {
|
|
381
|
+
return '0.0.0';
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
export async function main(argv, options = {}) {
|
|
385
|
+
// The board's driver is bun:sqlite, so the whole tool needs Bun. A Node
|
|
386
|
+
// install fails at the first query, and the message here says which
|
|
387
|
+
// runtime to use instead of showing a module resolution error.
|
|
388
|
+
if (!process.versions.bun) {
|
|
389
|
+
process.stderr.write(`openagentsy runs on Bun: the board uses bun:sqlite, which Node does not have.\nRun it with: bunx @voxslopuli/openagentsy@${packageVersion()} <command>\n`);
|
|
390
|
+
return 1;
|
|
391
|
+
}
|
|
392
|
+
const { values, positionals } = parseArgs({
|
|
393
|
+
args: argv,
|
|
394
|
+
allowPositionals: true,
|
|
395
|
+
options: {
|
|
396
|
+
root: { type: 'string' },
|
|
397
|
+
since: { type: 'string' },
|
|
398
|
+
out: { type: 'string' },
|
|
399
|
+
roles: { type: 'string' },
|
|
400
|
+
lock: { type: 'string' },
|
|
401
|
+
config: { type: 'string' },
|
|
402
|
+
'dry-run': { type: 'boolean' },
|
|
403
|
+
'magic-context': { type: 'boolean' },
|
|
404
|
+
providers: { type: 'string' },
|
|
405
|
+
all: { type: 'boolean' },
|
|
406
|
+
base: { type: 'string' },
|
|
407
|
+
'prefer-flash': { type: 'boolean' },
|
|
408
|
+
'allow-training': { type: 'boolean' },
|
|
409
|
+
'allow-retention': { type: 'boolean' },
|
|
410
|
+
key: { type: 'string' },
|
|
411
|
+
yes: { type: 'boolean' },
|
|
412
|
+
json: { type: 'boolean' },
|
|
413
|
+
ttl: { type: 'string' },
|
|
414
|
+
session: { type: 'string' },
|
|
415
|
+
bean: { type: 'string' },
|
|
416
|
+
ethical: { type: 'boolean' },
|
|
417
|
+
check: { type: 'boolean' },
|
|
418
|
+
help: { type: 'boolean', short: 'h' },
|
|
419
|
+
},
|
|
420
|
+
});
|
|
421
|
+
const command = positionals[0];
|
|
422
|
+
if (values.help === true || command === undefined) {
|
|
423
|
+
process.stdout.write(USAGE);
|
|
424
|
+
return command === undefined && values.help !== true ? 1 : 0;
|
|
425
|
+
}
|
|
426
|
+
const handler = COMMANDS[command];
|
|
427
|
+
if (handler === undefined) {
|
|
428
|
+
process.stderr.write(`unknown command: ${command}\n\n`);
|
|
429
|
+
process.stderr.write(USAGE);
|
|
430
|
+
return 1;
|
|
431
|
+
}
|
|
432
|
+
// The two roots of the command: the directory it runs in, and the
|
|
433
|
+
// directory that owns the shared state of the project. In a linked
|
|
434
|
+
// worktree the second is the main repository root.
|
|
435
|
+
const roots = resolveProjectRoots(values.root ?? process.cwd());
|
|
436
|
+
return handler(roots, values, positionals, options);
|
|
437
|
+
}
|
|
438
|
+
if (process.argv[1] !== undefined && import.meta.url === pathToFileURL(process.argv[1]).href) {
|
|
439
|
+
main(process.argv.slice(2))
|
|
440
|
+
.then((code) => {
|
|
441
|
+
process.exitCode = code;
|
|
442
|
+
})
|
|
443
|
+
.catch((error) => {
|
|
444
|
+
process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
|
|
445
|
+
process.exitCode = 1;
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":""}
|