@open-agent-toolkit/cli 0.3.28 → 0.3.30
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/README.md +4 -0
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/docs-tooling/add-docs-to-a-repo.md +2 -0
- package/assets/docs/docs-tooling/commands.md +111 -3
- package/assets/docs/docs-tooling/workflows.md +16 -0
- package/assets/docs/reference/cli-reference.md +2 -0
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/authoring-docs/SKILL.md +2 -2
- package/assets/skills/authoring-docs/references/information-architecture.md +5 -2
- package/assets/skills/authoring-docs/references/page-templates/alert-runbook.md +63 -0
- package/assets/skills/authoring-docs/references/page-templates/command-reference.md +55 -0
- package/assets/skills/authoring-docs/references/page-templates/decisions-pointer.md +44 -0
- package/assets/skills/authoring-docs/references/page-templates/engineering-feature.md +53 -0
- package/assets/skills/authoring-docs/references/page-templates/per-area-agents.md +42 -0
- package/assets/skills/authoring-docs/references/page-templates/product-feature.md +49 -0
- package/assets/skills/authoring-docs/references/page-templates/qa-validation.md +59 -0
- package/assets/skills/authoring-docs/references/page-templates/screen-spec.md +51 -0
- package/assets/skills/authoring-docs/references/page-templates/skill-command-guide.md +44 -0
- package/assets/skills/authoring-docs/references/page-templates/solution-record.md +43 -0
- package/assets/skills/authoring-docs/references/templates.md +22 -2
- package/assets/skills/oat-docs-analyze/SKILL.md +89 -3
- package/assets/skills/oat-docs-analyze/references/analysis-artifact-template.md +23 -0
- package/assets/skills/oat-docs-analyze/references/quality-checklist.md +18 -0
- package/assets/skills/oat-docs-bootstrap/SKILL.md +11 -5
- package/dist/commands/docs/index.d.ts.map +1 -1
- package/dist/commands/docs/index.js +2 -0
- package/dist/commands/docs/init/content.d.ts +23 -0
- package/dist/commands/docs/init/content.d.ts.map +1 -0
- package/dist/commands/docs/init/content.js +361 -0
- package/dist/commands/docs/init/index.d.ts.map +1 -1
- package/dist/commands/docs/init/index.js +32 -1
- package/dist/commands/docs/init/markdown.d.ts.map +1 -1
- package/dist/commands/docs/init/markdown.js +21 -2
- package/dist/commands/docs/init/resolve-options.d.ts +4 -1
- package/dist/commands/docs/init/resolve-options.d.ts.map +1 -1
- package/dist/commands/docs/init/resolve-options.js +4 -0
- package/dist/commands/docs/init/scaffold.d.ts.map +1 -1
- package/dist/commands/docs/init/scaffold.js +20 -1
- package/dist/commands/docs/literals/evidence.d.ts +39 -0
- package/dist/commands/docs/literals/evidence.d.ts.map +1 -0
- package/dist/commands/docs/literals/evidence.js +205 -0
- package/dist/commands/docs/literals/literals.d.ts +3 -0
- package/dist/commands/docs/literals/literals.d.ts.map +1 -0
- package/dist/commands/docs/literals/literals.js +50 -0
- package/dist/release/public-package-contract.d.ts.map +1 -1
- package/dist/release/public-package-contract.js +10 -0
- package/package.json +3 -3
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export declare class LiteralInputError extends Error {
|
|
2
|
+
}
|
|
3
|
+
export interface LiteralOptions {
|
|
4
|
+
cwd: string;
|
|
5
|
+
targetDir?: string;
|
|
6
|
+
page: string[];
|
|
7
|
+
sourceRoot: string[];
|
|
8
|
+
sourceExclude: string[];
|
|
9
|
+
}
|
|
10
|
+
interface Candidate {
|
|
11
|
+
path: string;
|
|
12
|
+
line: number;
|
|
13
|
+
literal: string;
|
|
14
|
+
normalized: string;
|
|
15
|
+
status: 'found' | 'not-found';
|
|
16
|
+
source?: {
|
|
17
|
+
path: string;
|
|
18
|
+
line: number;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export interface LiteralResult {
|
|
22
|
+
status: 'ok' | 'not-applicable';
|
|
23
|
+
reason?: string;
|
|
24
|
+
scope: {
|
|
25
|
+
contentRoot: string;
|
|
26
|
+
pages: string[];
|
|
27
|
+
sourceRoots: string[];
|
|
28
|
+
sourceExcludes: string[];
|
|
29
|
+
};
|
|
30
|
+
searched: string[];
|
|
31
|
+
skipped: {
|
|
32
|
+
path: string;
|
|
33
|
+
reason: 'symlink' | 'binary' | 'non-utf8' | 'non-regular';
|
|
34
|
+
}[];
|
|
35
|
+
literals: Candidate[];
|
|
36
|
+
}
|
|
37
|
+
export declare function collectLiteralEvidence(options: LiteralOptions): Promise<LiteralResult>;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=evidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/literals/evidence.ts"],"names":[],"mappings":"AAgBA,qBAAa,iBAAkB,SAAQ,KAAK;CAAG;AAE/C,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AACD,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,GAAG,WAAW,CAAC;IAC9B,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACzC;AACD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,IAAI,GAAG,gBAAgB,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,cAAc,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;IACF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC;KAC3D,EAAE,CAAC;IACJ,QAAQ,EAAE,SAAS,EAAE,CAAC;CACvB;AAkDD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,aAAa,CAAC,CA6MxB"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { lstat, readFile, readdir, realpath, stat } from 'node:fs/promises';
|
|
2
|
+
import { join, relative, resolve } from 'node:path';
|
|
3
|
+
import { containedFile, inside, posix, resolveCheckTarget, } from '../../docs/check/files.js';
|
|
4
|
+
import { parsePage } from '../../docs/check/markdown.js';
|
|
5
|
+
import { createExclusionMatcher, isExcludedPath, } from '../../docs/shared/exclusions.js';
|
|
6
|
+
import { decodeHTMLStrict } from 'entities';
|
|
7
|
+
export class LiteralInputError extends Error {
|
|
8
|
+
}
|
|
9
|
+
function inputPath(value, label, pattern = false) {
|
|
10
|
+
const path = value.trim().replace(/^\.\//, '');
|
|
11
|
+
const parts = path.replace(/\/$/, '').split('/');
|
|
12
|
+
if (!path ||
|
|
13
|
+
path.startsWith('/') ||
|
|
14
|
+
/^[A-Za-z]:/.test(path) ||
|
|
15
|
+
path.includes('\\') ||
|
|
16
|
+
[...path].some((c) => c.charCodeAt(0) < 32) ||
|
|
17
|
+
parts.some((p) => !p || p === '.' || p === '..') ||
|
|
18
|
+
(!pattern && path.includes('*')))
|
|
19
|
+
throw new LiteralInputError(`${label} must be a non-empty relative POSIX ${pattern ? 'pattern' : 'path'} without parent segments.`);
|
|
20
|
+
return pattern ? path : path.replace(/\/$/, '');
|
|
21
|
+
}
|
|
22
|
+
const unique = (values) => [...new Set(values)].sort();
|
|
23
|
+
async function selected(label, operation) {
|
|
24
|
+
try {
|
|
25
|
+
return await operation();
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
if (['ENOENT', 'ENOTDIR', 'EACCES', 'EPERM', 'ELOOP', 'EISDIR'].includes(error.code ?? ''))
|
|
29
|
+
throw new LiteralInputError(`Cannot read ${label}; check that it exists and is readable.`);
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function text(bytes) {
|
|
34
|
+
if (bytes.includes(0))
|
|
35
|
+
return { reason: 'binary' };
|
|
36
|
+
try {
|
|
37
|
+
return { value: new TextDecoder('utf-8', { fatal: true }).decode(bytes) };
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return { reason: 'non-utf8' };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export async function collectLiteralEvidence(options) {
|
|
44
|
+
const target = await selected('documentation target/config', async () => {
|
|
45
|
+
try {
|
|
46
|
+
return await resolveCheckTarget(options.cwd, options.targetDir);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
if (!error.code)
|
|
50
|
+
throw new LiteralInputError('Cannot resolve documentation target/config; check .oat/config.json, documentation.root, documentation.ia and --target-dir.');
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
const result = {
|
|
55
|
+
status: 'not-applicable',
|
|
56
|
+
scope: {
|
|
57
|
+
contentRoot: posix(relative(target.repoRoot, target.contentRoot)) || '.',
|
|
58
|
+
pages: [],
|
|
59
|
+
sourceRoots: [],
|
|
60
|
+
sourceExcludes: [],
|
|
61
|
+
},
|
|
62
|
+
searched: [],
|
|
63
|
+
skipped: [],
|
|
64
|
+
literals: [],
|
|
65
|
+
};
|
|
66
|
+
// Config is only the extraction gate. The skill separately reconciles authored acceptance.
|
|
67
|
+
if (target.documentation.ia?.verification !== 'triad') {
|
|
68
|
+
result.reason =
|
|
69
|
+
'The matching documentation IA mirror does not declare verification: triad.';
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
if (!inside(target.repoRoot, target.contentRoot))
|
|
73
|
+
throw new LiteralInputError('Docs content root must be inside the repository.');
|
|
74
|
+
if (!options.page.length || !options.sourceRoot.length)
|
|
75
|
+
throw new LiteralInputError('Provide at least one --page and one narrow --source-root.');
|
|
76
|
+
const pages = unique(options.page.map((p) => inputPath(p, '--page')));
|
|
77
|
+
const roots = unique(options.sourceRoot.map((p) => inputPath(p, '--source-root')));
|
|
78
|
+
const excludes = unique(options.sourceExclude.map((p) => inputPath(p, '--source-exclude', true)));
|
|
79
|
+
result.scope = {
|
|
80
|
+
contentRoot: result.scope.contentRoot,
|
|
81
|
+
pages,
|
|
82
|
+
sourceRoots: roots,
|
|
83
|
+
sourceExcludes: excludes,
|
|
84
|
+
};
|
|
85
|
+
const matcher = createExclusionMatcher(excludes);
|
|
86
|
+
const sources = new Set();
|
|
87
|
+
const skipped = new Map();
|
|
88
|
+
// Inspect each component so an explicitly selected nested alias cannot bypass traversal policy.
|
|
89
|
+
const symlinkComponent = async (root, path) => {
|
|
90
|
+
const parts = path.split('/');
|
|
91
|
+
for (let i = 1; i <= parts.length; i++) {
|
|
92
|
+
if ((await lstat(join(root, ...parts.slice(0, i)))).isSymbolicLink())
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
return false;
|
|
96
|
+
};
|
|
97
|
+
const walk = async (path) => {
|
|
98
|
+
const absolute = join(target.repoRoot, path);
|
|
99
|
+
const info = await selected(`source ${path}`, () => lstat(absolute));
|
|
100
|
+
if (info.isSymbolicLink()) {
|
|
101
|
+
skipped.set(path, 'symlink');
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (isExcludedPath(matcher, path, info.isDirectory()))
|
|
105
|
+
return;
|
|
106
|
+
if (info.isDirectory()) {
|
|
107
|
+
const entries = await selected(`source directory ${path}`, () => readdir(absolute));
|
|
108
|
+
for (const name of entries.sort())
|
|
109
|
+
await walk(`${path}/${name}`);
|
|
110
|
+
}
|
|
111
|
+
else if (info.isFile())
|
|
112
|
+
sources.add(path);
|
|
113
|
+
else
|
|
114
|
+
skipped.set(path, 'non-regular');
|
|
115
|
+
};
|
|
116
|
+
for (const path of roots) {
|
|
117
|
+
await selected(`source root ${path}`, async () => {
|
|
118
|
+
const absolute = resolve(target.repoRoot, path);
|
|
119
|
+
if (!inside(target.repoRoot, absolute) || absolute === target.repoRoot)
|
|
120
|
+
throw new LiteralInputError('Source roots must be narrow directories inside the repository, never the repository root.');
|
|
121
|
+
if (await symlinkComponent(target.repoRoot, path)) {
|
|
122
|
+
// An external alias is invalid input, even though it will never be read.
|
|
123
|
+
if (!inside(target.repoRoot, await realpath(absolute)))
|
|
124
|
+
throw new LiteralInputError(`Source root ${path} resolves outside the repository.`);
|
|
125
|
+
skipped.set(path, 'symlink');
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
if (!inside(target.repoRoot, await realpath(absolute)) ||
|
|
129
|
+
!(await stat(absolute)).isDirectory())
|
|
130
|
+
throw new LiteralInputError(`Source root ${path} must be a contained directory.`);
|
|
131
|
+
const canonical = posix(relative(await realpath(target.repoRoot), await realpath(absolute)));
|
|
132
|
+
if (canonical !== path)
|
|
133
|
+
throw new LiteralInputError(`Source root ${path} must use its canonical repo-relative spelling: ${canonical}.`);
|
|
134
|
+
await walk(path);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
const sourceLines = [];
|
|
138
|
+
for (const path of [...sources].sort()) {
|
|
139
|
+
if (!(await containedFile(target.repoRoot, join(target.repoRoot, path))))
|
|
140
|
+
throw new LiteralInputError(`Source ${path} is no longer a contained file; rerun with stable inputs.`);
|
|
141
|
+
const decoded = text(await selected(`source ${path}`, () => readFile(join(target.repoRoot, path))));
|
|
142
|
+
if ('reason' in decoded)
|
|
143
|
+
skipped.set(path, decoded.reason);
|
|
144
|
+
else {
|
|
145
|
+
result.searched.push(path);
|
|
146
|
+
sourceLines.push({
|
|
147
|
+
path,
|
|
148
|
+
lines: decoded.value
|
|
149
|
+
.split(/\r\n|\n|\r/)
|
|
150
|
+
.map((line) => decodeHTMLStrict(line)),
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if (!sourceLines.length)
|
|
155
|
+
throw new LiteralInputError(`No readable UTF-8 source files remain after exclusions; correct --source-root/--source-exclude. Skipped: ${[...skipped]
|
|
156
|
+
.sort()
|
|
157
|
+
.map(([path, reason]) => `${path} (${reason})`)
|
|
158
|
+
.join(', ') || 'none'}.`);
|
|
159
|
+
for (const path of pages) {
|
|
160
|
+
await selected(`page ${path}`, async () => {
|
|
161
|
+
const absolute = resolve(target.contentRoot, path);
|
|
162
|
+
if (!/\.mdx?$/.test(path) ||
|
|
163
|
+
isExcludedPath(target.matcher, path) ||
|
|
164
|
+
(await symlinkComponent(target.contentRoot, path)) ||
|
|
165
|
+
!(await containedFile(target.contentRoot, absolute)))
|
|
166
|
+
throw new LiteralInputError(`Page ${path} must be readable reader Markdown inside the content root, outside nonReaderPaths, with no symlink components below the content root.`);
|
|
167
|
+
const canonical = posix(relative(await realpath(target.contentRoot), await realpath(absolute)));
|
|
168
|
+
if (canonical !== path)
|
|
169
|
+
throw new LiteralInputError(`Page ${path} must use its canonical content-relative spelling: ${canonical}.`);
|
|
170
|
+
const decoded = text(await readFile(absolute));
|
|
171
|
+
if ('reason' in decoded)
|
|
172
|
+
throw new LiteralInputError(`Page ${path} must be UTF-8 Markdown text.`);
|
|
173
|
+
const page = parsePage(path, decoded.value);
|
|
174
|
+
if (page.frontmatterError)
|
|
175
|
+
throw new LiteralInputError(`Page ${path} has invalid YAML frontmatter.`);
|
|
176
|
+
for (const node of page.nodes) {
|
|
177
|
+
if (node.type !== 'inlineCode')
|
|
178
|
+
continue;
|
|
179
|
+
const literal = node.value ?? '';
|
|
180
|
+
const normalized = decodeHTMLStrict(literal);
|
|
181
|
+
const candidate = {
|
|
182
|
+
path,
|
|
183
|
+
line: node.position?.start.line ?? 1,
|
|
184
|
+
literal,
|
|
185
|
+
normalized,
|
|
186
|
+
status: 'not-found',
|
|
187
|
+
};
|
|
188
|
+
for (const source of sourceLines) {
|
|
189
|
+
const index = source.lines.findIndex((line) => line.includes(normalized));
|
|
190
|
+
if (index >= 0) {
|
|
191
|
+
candidate.status = 'found';
|
|
192
|
+
candidate.source = { path: source.path, line: index + 1 };
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
result.literals.push(candidate);
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
result.status = 'ok';
|
|
201
|
+
result.skipped = [...skipped]
|
|
202
|
+
.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))
|
|
203
|
+
.map(([path, reason]) => ({ path, reason }));
|
|
204
|
+
return result;
|
|
205
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"literals.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/literals/literals.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,yBAAyB,IAAI,OAAO,CAmEnD"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { buildCommandContext } from '../../../app/command-context.js';
|
|
2
|
+
import { readGlobalOptions } from '../../shared/shared.utils.js';
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import { collectLiteralEvidence, LiteralInputError, } from './evidence.js';
|
|
5
|
+
export function createDocsLiteralsCommand() {
|
|
6
|
+
const append = (value, previous = []) => previous.concat(value);
|
|
7
|
+
return new Command('literals')
|
|
8
|
+
.allowExcessArguments(false)
|
|
9
|
+
.description('Read-only triad inline-code occurrence candidates; found does not prove runtime behavior')
|
|
10
|
+
.option('--target-dir <dir>', 'Docs app root or literal Markdown content root')
|
|
11
|
+
.requiredOption('--page <path>', 'Content-relative Product/QA reader Markdown (repeat one value per flag)', append)
|
|
12
|
+
.requiredOption('--source-root <dir>', 'Narrow repo-relative implementation directory, never repo root (repeatable)', append)
|
|
13
|
+
.option('--source-exclude <pattern>', 'Repo-relative bounded POSIX exclusion: segment *, whole-segment **, trailing / directories (repeatable)', append, [])
|
|
14
|
+
.addHelpText('after', '\nMatching: one strict HTML entity decode per inline-code value and physical source line; case-sensitive substring. CommonMark may normalize multiline code spans. No whitespace/Unicode folding, JS escapes, interpolation or runtime evaluation. Sources are searched only within explicit roots; inspect searched/skipped evidence. Exit 0: completed (including not-found/not-applicable); 1: input/config; 2: runtime failure.')
|
|
15
|
+
.action(async (options, command) => {
|
|
16
|
+
const context = buildCommandContext(readGlobalOptions(command));
|
|
17
|
+
try {
|
|
18
|
+
const result = await collectLiteralEvidence({
|
|
19
|
+
...options,
|
|
20
|
+
cwd: context.cwd,
|
|
21
|
+
});
|
|
22
|
+
process.exitCode = 0;
|
|
23
|
+
if (context.json)
|
|
24
|
+
context.logger.json(result);
|
|
25
|
+
else {
|
|
26
|
+
context.logger.info(result.status === 'not-applicable'
|
|
27
|
+
? `Not applicable: ${result.reason}`
|
|
28
|
+
: `Literal occurrence candidates: ${result.literals.filter((c) => c.status === 'found').length} found, ${result.literals.filter((c) => c.status === 'not-found').length} not-found. These require canonical-source judgment.`);
|
|
29
|
+
context.logger.info(JSON.stringify({
|
|
30
|
+
scope: result.scope,
|
|
31
|
+
searched: result.searched,
|
|
32
|
+
skipped: result.skipped,
|
|
33
|
+
literals: result.literals,
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
const input = error instanceof LiteralInputError;
|
|
39
|
+
process.exitCode = input ? 1 : 2;
|
|
40
|
+
// Resolver/config diagnostics can carry local absolute paths; keep evidence relative.
|
|
41
|
+
const message = error.message
|
|
42
|
+
.replaceAll(`${context.cwd}/`, '')
|
|
43
|
+
.replaceAll(context.cwd, '.');
|
|
44
|
+
if (context.json)
|
|
45
|
+
context.logger.json({ status: 'error', message });
|
|
46
|
+
else
|
|
47
|
+
context.logger.error(message);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-package-contract.d.ts","sourceRoot":"","sources":["../../src/release/public-package-contract.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,KAAK,GAAG,cAAc,GAAG,iBAAiB,CAAC;IACjD,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,uBAAuB,EAAE,yBAAyB,EAAE,CAAC;IACrD,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,4BAA4B,EAAE,MAAM,EAAE,CAAC;IACvC,2BAA2B,EAAE,MAAM,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"public-package-contract.d.ts","sourceRoot":"","sources":["../../src/release/public-package-contract.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,KAAK,GAAG,cAAc,GAAG,iBAAiB,CAAC;IACjD,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,uBAAuB,EAAE,yBAAyB,EAAE,CAAC;IACrD,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,4BAA4B,EAAE,MAAM,EAAE,CAAC;IACvC,2BAA2B,EAAE,MAAM,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AA+MD,wBAAgB,yBAAyB,IAAI,qBAAqB,EAAE,CAenE;AAED,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,QAAQ,EAAE,qBAAqB,GAC9B,MAAM,EAAE,CAIV;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,QAAQ,EAAE,qBAAqB,GAC9B,MAAM,EAAE,CAIV;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,QAAQ,EAAE,qBAAqB,GAC9B,MAAM,EAAE,CAMV;AAED,wBAAgB,6BAA6B,CAC3C,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACjD,QAAQ,EAAE,qBAAqB,GAC9B,MAAM,EAAE,CAoBV;AAED,wBAAgB,oCAAoC,CAClD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,MAAM,EAAE,CAmBV;AAED,wBAAgB,qCAAqC,CACnD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,kBAAkB,EAAE,SAAS,MAAM,EAAE,EACrC,qBAAqB,EAAE,SAAS,MAAM,EAAE,GACvC,MAAM,EAAE,CA0BV"}
|
|
@@ -76,6 +76,16 @@ const PUBLIC_PACKAGE_CONTRACTS = [
|
|
|
76
76
|
'assets/templates/pjm-agents.md',
|
|
77
77
|
'assets/templates/reference-agents.md',
|
|
78
78
|
'assets/skills/explainer-kit/scripts/lib/package-coverage.mjs',
|
|
79
|
+
'assets/skills/authoring-docs/references/page-templates/product-feature.md',
|
|
80
|
+
'assets/skills/authoring-docs/references/page-templates/engineering-feature.md',
|
|
81
|
+
'assets/skills/authoring-docs/references/page-templates/qa-validation.md',
|
|
82
|
+
'assets/skills/authoring-docs/references/page-templates/screen-spec.md',
|
|
83
|
+
'assets/skills/authoring-docs/references/page-templates/alert-runbook.md',
|
|
84
|
+
'assets/skills/authoring-docs/references/page-templates/solution-record.md',
|
|
85
|
+
'assets/skills/authoring-docs/references/page-templates/command-reference.md',
|
|
86
|
+
'assets/skills/authoring-docs/references/page-templates/skill-command-guide.md',
|
|
87
|
+
'assets/skills/authoring-docs/references/page-templates/decisions-pointer.md',
|
|
88
|
+
'assets/skills/authoring-docs/references/page-templates/per-area-agents.md',
|
|
79
89
|
'assets/NOTICES.md',
|
|
80
90
|
'README.md',
|
|
81
91
|
],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-agent-toolkit/cli",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.30",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Open Agent Toolkit CLI",
|
|
6
6
|
"homepage": "https://github.com/voxmedia/open-agent-toolkit/tree/main/packages/cli",
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"unified": "11.0.5",
|
|
43
43
|
"yaml": "2.8.2",
|
|
44
44
|
"zod": "^3.25.76",
|
|
45
|
-
"@open-agent-toolkit/control-plane": "0.3.
|
|
46
|
-
"@open-agent-toolkit/docs-transforms": "0.3.
|
|
45
|
+
"@open-agent-toolkit/control-plane": "0.3.30",
|
|
46
|
+
"@open-agent-toolkit/docs-transforms": "0.3.30"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@types/jsdom": "28.0.3",
|