@open-agent-toolkit/cli 0.0.20 → 0.0.22
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/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-project-complete/SKILL.md +21 -6
- package/assets/skills/oat-project-pr-final/SKILL.md +5 -2
- package/dist/release/public-package-contract.d.ts +1 -0
- package/dist/release/public-package-contract.d.ts.map +1 -1
- package/dist/release/public-package-contract.js +5 -0
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-complete
|
|
3
|
-
version: 1.3.
|
|
3
|
+
version: 1.3.7
|
|
4
4
|
description: Use when all implementation work is finished and the project is ready to close. Marks the OAT project lifecycle as complete.
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
user-invocable: true
|
|
@@ -64,11 +64,20 @@ Ask all user questions at once so the user can answer them in a single interacti
|
|
|
64
64
|
|
|
65
65
|
Before asking the batched questions, read `oat_pr_status` and `oat_pr_url` from `state.md` frontmatter.
|
|
66
66
|
|
|
67
|
+
Also preflight summary status using the same freshness rules as `oat-project-summary`:
|
|
68
|
+
|
|
69
|
+
- `summary.md` is `missing` when `{PROJECT_PATH}/summary.md` does not exist
|
|
70
|
+
- `summary.md` is `stale` when the tracking frontmatter fields `oat_summary_last_task`, `oat_summary_revision_count`, or `oat_summary_includes_revisions` no longer match `current_last_task`, `current_rev_count`, or `current_rev_list` as defined in `oat-project-summary` Step 3
|
|
71
|
+
- `summary.md` is `current` when those tracking fields still match the `oat-project-summary` Step 3 comparison inputs
|
|
72
|
+
|
|
67
73
|
**Questions to ask (in a single prompt):**
|
|
68
74
|
|
|
69
75
|
1. **Confirm completion:** "Ready to mark **{PROJECT_NAME}** as complete?"
|
|
70
76
|
2. **Archive** (only if `IS_SHARED_PROJECT` is `true`): "Archive the project after completion?"
|
|
71
|
-
3. **
|
|
77
|
+
3. **Generate or refresh summary** (only if summary status is `missing` or `stale`): present the status explicitly:
|
|
78
|
+
- Missing example: "A summary has not been generated yet. Would you like me to generate it now as part of completion?"
|
|
79
|
+
- Stale example: "The project summary is out of date. Would you like me to refresh it now as part of completion?"
|
|
80
|
+
4. **Open PR:** "Open a PR in GitHub after generating the PR description?" — ask this only when no tracked open PR already exists.
|
|
72
81
|
|
|
73
82
|
If `oat_pr_status` is `open`, do not ask the Open PR question. Set `SHOULD_OPEN_PR="false"` and treat the existing PR as already tracked.
|
|
74
83
|
|
|
@@ -78,12 +87,15 @@ Present all applicable questions together. Example combined prompt:
|
|
|
78
87
|
Ready to complete project **{PROJECT_NAME}**?
|
|
79
88
|
|
|
80
89
|
1. Archive the project after completion? (yes/no)
|
|
81
|
-
2.
|
|
90
|
+
2. A summary has not been generated yet. Generate it now as part of completion? (yes/no)
|
|
91
|
+
3. Open a PR in GitHub? (yes/no)
|
|
82
92
|
```
|
|
83
93
|
|
|
84
94
|
If the user declines the completion confirmation, exit gracefully.
|
|
85
95
|
|
|
86
|
-
Store the answers as `SHOULD_ARCHIVE` and `SHOULD_OPEN_PR` for use in later steps.
|
|
96
|
+
Store the answers as `SHOULD_ARCHIVE`, `SHOULD_GENERATE_SUMMARY`, and `SHOULD_OPEN_PR` for use in later steps.
|
|
97
|
+
|
|
98
|
+
If the summary status is `current`, set `SHOULD_GENERATE_SUMMARY="false"` and note that a current summary is already available.
|
|
87
99
|
|
|
88
100
|
If `oat_pr_url` is present, show it in the completion summary.
|
|
89
101
|
|
|
@@ -187,8 +199,11 @@ After collecting all warnings from 3.1, 3.2, and 3.3:
|
|
|
187
199
|
|
|
188
200
|
Check if `{PROJECT_PATH}/summary.md` exists and whether it is current against the implementation state:
|
|
189
201
|
|
|
190
|
-
- If `summary.md` is missing or stale
|
|
191
|
-
-
|
|
202
|
+
- If `summary.md` is missing or stale and `SHOULD_GENERATE_SUMMARY="true"`, generate or refresh it before completing.
|
|
203
|
+
- Prefer running the `oat-project-summary` skill when skill-to-skill invocation is available in the current host/runtime.
|
|
204
|
+
- If direct skill invocation is unavailable, generate or update `summary.md` inline by following the same synthesis rules as `oat-project-summary` (validate implementation state, read the same project artifacts, apply the same freshness checks, update the same frontmatter tracking fields, and write a complete `summary.md` before continuing).
|
|
205
|
+
- Do not assume `oat-project-summary` is a shell command on `PATH`. Only execute a shell command with that name if the environment explicitly provides a real executable.
|
|
206
|
+
- If `summary.md` is missing or stale and `SHOULD_GENERATE_SUMMARY="false"`, emit: `Warning: Proceeding without summary generation.`
|
|
192
207
|
- If summary generation succeeds, proceed with the refreshed `summary.md` available for PR and archive steps.
|
|
193
208
|
- If summary generation fails mid-way (context limits, missing artifacts, etc.), warn "Summary generation failed: {reason}. Proceeding without summary." Do NOT leave a half-written summary.md — either it completes fully or clean up the partial file and proceed without it.
|
|
194
209
|
- If `summary.md` already exists and is current, note it as available. Summary.md will be:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-pr-final
|
|
3
|
-
version: 1.3.
|
|
3
|
+
version: 1.3.2
|
|
4
4
|
description: Use when an active OAT project has completed all phases and is ready for final merge to main. Generates the final OAT lifecycle PR description from artifacts and review status, then creates the PR automatically.
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
user-invocable: true
|
|
@@ -173,7 +173,10 @@ If `FINAL_ROW` is missing or does not contain `passed`:
|
|
|
173
173
|
|
|
174
174
|
Check if `{PROJECT_PATH}/summary.md` exists:
|
|
175
175
|
|
|
176
|
-
- If `summary.md` is missing or stale,
|
|
176
|
+
- If `summary.md` is missing or stale, refresh it automatically before proceeding.
|
|
177
|
+
- Prefer running the `oat-project-summary` skill when skill-to-skill invocation is available in the current host/runtime.
|
|
178
|
+
- If direct skill invocation is unavailable, generate or update `summary.md` inline by following the same synthesis rules as `oat-project-summary` (validate implementation state, read the same project artifacts, apply the same freshness checks, update the same frontmatter tracking fields, and write a complete `summary.md` before continuing).
|
|
179
|
+
- Do not assume `oat-project-summary` is a shell command on `PATH`. Only execute a shell command with that name if the environment explicitly provides a real executable.
|
|
177
180
|
- Do not ask whether to generate or refresh `summary.md` during pr-final.
|
|
178
181
|
- **If generation succeeds:** Read the refreshed `summary.md` and use it as the primary source for the PR description's `## Summary` section. The PR Summary should be a condensed version of summary.md's Overview + What Was Implemented sections — reviewer-oriented and actionable, not a copy-paste.
|
|
179
182
|
- **If generation fails:** Warn and fall back to the raw artifact synthesis below.
|
|
@@ -5,6 +5,7 @@ export interface PublicPackageContract {
|
|
|
5
5
|
requiredMetadataFields: string[];
|
|
6
6
|
requiredPaths: string[];
|
|
7
7
|
forbiddenPathPatterns: string[];
|
|
8
|
+
versionPolicyIgnorePatterns: string[];
|
|
8
9
|
}
|
|
9
10
|
export declare function getPublicPackageContracts(): PublicPackageContract[];
|
|
10
11
|
export declare function findMissingMetadataFields(packageJson: Record<string, unknown>, contract: PublicPackageContract): string[];
|
|
@@ -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,CAAC;IAC7B,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,qBAAqB,EAAE,MAAM,EAAE,CAAC;
|
|
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,CAAC;IAC7B,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,2BAA2B,EAAE,MAAM,EAAE,CAAC;CACvC;AAsFD,wBAAgB,yBAAyB,IAAI,qBAAqB,EAAE,CAQnE;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,oCAAoC,CAClD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,MAAM,EAAE,CAmBV"}
|
|
@@ -26,6 +26,7 @@ const PUBLIC_PACKAGE_CONTRACTS = [
|
|
|
26
26
|
requiredMetadataFields: [...COMMON_METADATA_FIELDS, 'bin.oat'],
|
|
27
27
|
requiredPaths: ['dist/index.js', 'assets', 'README.md'],
|
|
28
28
|
forbiddenPathPatterns: [...COMMON_FORBIDDEN_PATH_PATTERNS],
|
|
29
|
+
versionPolicyIgnorePatterns: ['assets/public-package-versions.json'],
|
|
29
30
|
},
|
|
30
31
|
{
|
|
31
32
|
workspaceDir: 'packages/docs-config',
|
|
@@ -34,6 +35,7 @@ const PUBLIC_PACKAGE_CONTRACTS = [
|
|
|
34
35
|
requiredMetadataFields: [...COMMON_METADATA_FIELDS, 'exports', 'types'],
|
|
35
36
|
requiredPaths: ['dist/index.js', 'dist/index.d.ts', 'README.md'],
|
|
36
37
|
forbiddenPathPatterns: [...COMMON_FORBIDDEN_PATH_PATTERNS],
|
|
38
|
+
versionPolicyIgnorePatterns: [],
|
|
37
39
|
},
|
|
38
40
|
{
|
|
39
41
|
workspaceDir: 'packages/docs-theme',
|
|
@@ -42,6 +44,7 @@ const PUBLIC_PACKAGE_CONTRACTS = [
|
|
|
42
44
|
requiredMetadataFields: [...COMMON_METADATA_FIELDS, 'exports', 'types'],
|
|
43
45
|
requiredPaths: ['dist/index.js', 'dist/index.d.ts', 'README.md'],
|
|
44
46
|
forbiddenPathPatterns: [...COMMON_FORBIDDEN_PATH_PATTERNS],
|
|
47
|
+
versionPolicyIgnorePatterns: [],
|
|
45
48
|
},
|
|
46
49
|
{
|
|
47
50
|
workspaceDir: 'packages/docs-transforms',
|
|
@@ -50,6 +53,7 @@ const PUBLIC_PACKAGE_CONTRACTS = [
|
|
|
50
53
|
requiredMetadataFields: [...COMMON_METADATA_FIELDS, 'exports', 'types'],
|
|
51
54
|
requiredPaths: ['dist/index.js', 'dist/index.d.ts', 'README.md'],
|
|
52
55
|
forbiddenPathPatterns: [...COMMON_FORBIDDEN_PATH_PATTERNS],
|
|
56
|
+
versionPolicyIgnorePatterns: [],
|
|
53
57
|
},
|
|
54
58
|
];
|
|
55
59
|
function getMetadataValue(packageJson, fieldPath) {
|
|
@@ -69,6 +73,7 @@ export function getPublicPackageContracts() {
|
|
|
69
73
|
requiredMetadataFields: [...contract.requiredMetadataFields],
|
|
70
74
|
requiredPaths: [...contract.requiredPaths],
|
|
71
75
|
forbiddenPathPatterns: [...contract.forbiddenPathPatterns],
|
|
76
|
+
versionPolicyIgnorePatterns: [...contract.versionPolicyIgnorePatterns],
|
|
72
77
|
}));
|
|
73
78
|
}
|
|
74
79
|
export function findMissingMetadataFields(packageJson, contract) {
|