agentplane 0.1.7 → 0.1.9
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/AGENTS.md +13 -2
- package/dist/backends/task-backend.d.ts +28 -0
- package/dist/backends/task-backend.d.ts.map +1 -1
- package/dist/backends/task-backend.js +85 -4
- package/dist/backends/task-index.d.ts.map +1 -1
- package/dist/backends/task-index.js +3 -6
- package/dist/cli/command-guide.d.ts.map +1 -1
- package/dist/cli/command-guide.js +10 -11
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +7 -5
- package/dist/cli/run-cli.d.ts.map +1 -1
- package/dist/cli/run-cli.js +75 -74
- package/dist/commands/backend.d.ts.map +1 -1
- package/dist/commands/backend.js +17 -2
- package/dist/commands/branch/index.d.ts.map +1 -1
- package/dist/commands/branch/index.js +3 -1
- package/dist/commands/guard/index.d.ts +24 -3
- package/dist/commands/guard/index.d.ts.map +1 -1
- package/dist/commands/guard/index.js +175 -61
- package/dist/commands/hooks/index.d.ts.map +1 -1
- package/dist/commands/hooks/index.js +39 -29
- package/dist/commands/pr/index.d.ts.map +1 -1
- package/dist/commands/pr/index.js +15 -12
- package/dist/commands/recipes.d.ts +75 -6
- package/dist/commands/recipes.d.ts.map +1 -1
- package/dist/commands/recipes.js +76 -538
- package/dist/commands/scenario.d.ts +7 -0
- package/dist/commands/scenario.d.ts.map +1 -0
- package/dist/commands/scenario.js +501 -0
- package/dist/commands/shared/network-approval.d.ts +8 -0
- package/dist/commands/shared/network-approval.d.ts.map +1 -0
- package/dist/commands/shared/network-approval.js +25 -0
- package/dist/commands/shared/task-backend.d.ts +19 -3
- package/dist/commands/shared/task-backend.d.ts.map +1 -1
- package/dist/commands/shared/task-backend.js +19 -5
- package/dist/commands/task/block.d.ts.map +1 -1
- package/dist/commands/task/block.js +22 -16
- package/dist/commands/task/comment.d.ts.map +1 -1
- package/dist/commands/task/comment.js +9 -2
- package/dist/commands/task/finish.d.ts.map +1 -1
- package/dist/commands/task/finish.js +36 -25
- package/dist/commands/task/index.d.ts +3 -0
- package/dist/commands/task/index.d.ts.map +1 -1
- package/dist/commands/task/index.js +3 -0
- package/dist/commands/task/migrate-doc.d.ts +8 -0
- package/dist/commands/task/migrate-doc.d.ts.map +1 -0
- package/dist/commands/task/migrate-doc.js +147 -0
- package/dist/commands/task/plan.d.ts +14 -0
- package/dist/commands/task/plan.d.ts.map +1 -0
- package/dist/commands/task/plan.js +217 -0
- package/dist/commands/task/scaffold.d.ts.map +1 -1
- package/dist/commands/task/scaffold.js +15 -4
- package/dist/commands/task/set-status.d.ts.map +1 -1
- package/dist/commands/task/set-status.js +18 -4
- package/dist/commands/task/shared.d.ts +5 -2
- package/dist/commands/task/shared.d.ts.map +1 -1
- package/dist/commands/task/shared.js +47 -28
- package/dist/commands/task/start.d.ts.map +1 -1
- package/dist/commands/task/start.js +24 -17
- package/dist/commands/task/verify-record.d.ts +16 -0
- package/dist/commands/task/verify-record.d.ts.map +1 -0
- package/dist/commands/task/verify-record.js +284 -0
- package/dist/commands/task/verify.d.ts +1 -13
- package/dist/commands/task/verify.d.ts.map +1 -1
- package/dist/commands/task/verify.js +1 -362
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +17 -2
- package/dist/commands/workflow.d.ts +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +1 -1
- package/dist/shared/git-log.d.ts +5 -0
- package/dist/shared/git-log.d.ts.map +1 -0
- package/dist/shared/git-log.js +14 -0
- package/dist/shared/git-path.d.ts +3 -0
- package/dist/shared/git-path.d.ts.map +1 -0
- package/dist/shared/git-path.js +30 -0
- package/dist/shared/guards.d.ts +2 -0
- package/dist/shared/guards.d.ts.map +1 -0
- package/dist/shared/guards.js +3 -0
- package/dist/shared/protected-paths.d.ts +12 -0
- package/dist/shared/protected-paths.d.ts.map +1 -0
- package/dist/shared/protected-paths.js +51 -0
- package/dist/shared/strings.d.ts +2 -0
- package/dist/shared/strings.d.ts.map +1 -0
- package/dist/shared/strings.js +14 -0
- package/package.json +2 -2
package/dist/commands/upgrade.js
CHANGED
|
@@ -9,12 +9,13 @@ import { extractArchive } from "../cli/archive.js";
|
|
|
9
9
|
import { invalidFieldMessage, invalidValueMessage, missingValueMessage, requiredFieldMessage, usageMessage, } from "../cli/output.js";
|
|
10
10
|
import { exitCodeForError } from "../cli/exit-codes.js";
|
|
11
11
|
import { CliError } from "../shared/errors.js";
|
|
12
|
+
import { ensureNetworkApproved } from "./shared/network-approval.js";
|
|
12
13
|
const DEFAULT_UPGRADE_ASSET = "agentplane-upgrade.tar.gz";
|
|
13
14
|
const DEFAULT_UPGRADE_CHECKSUM_ASSET = "agentplane-upgrade.tar.gz.sha256";
|
|
14
|
-
const UPGRADE_USAGE = "Usage: agentplane upgrade [--tag <tag>] [--dry-run] [--no-backup] [--source <repo-url>] [--bundle <path|url>] [--checksum <path|url>]";
|
|
15
|
+
const UPGRADE_USAGE = "Usage: agentplane upgrade [--tag <tag>] [--dry-run] [--no-backup] [--source <repo-url>] [--bundle <path|url>] [--checksum <path|url>] [--yes]";
|
|
15
16
|
const UPGRADE_USAGE_EXAMPLE = "agentplane upgrade --tag v0.1.4 --dry-run";
|
|
16
17
|
function parseUpgradeFlags(args) {
|
|
17
|
-
const out = { dryRun: false, backup: true };
|
|
18
|
+
const out = { dryRun: false, backup: true, yes: false };
|
|
18
19
|
for (let i = 0; i < args.length; i++) {
|
|
19
20
|
const arg = args[i];
|
|
20
21
|
if (!arg)
|
|
@@ -34,6 +35,10 @@ function parseUpgradeFlags(args) {
|
|
|
34
35
|
out.backup = false;
|
|
35
36
|
continue;
|
|
36
37
|
}
|
|
38
|
+
if (arg === "--yes") {
|
|
39
|
+
out.yes = true;
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
37
42
|
const next = args[i + 1];
|
|
38
43
|
if (!next) {
|
|
39
44
|
throw new CliError({ exitCode: 2, code: "E_USAGE", message: missingValueMessage(arg) });
|
|
@@ -136,6 +141,13 @@ export async function cmdUpgrade(opts) {
|
|
|
136
141
|
});
|
|
137
142
|
const loaded = await loadConfig(resolved.agentplaneDir);
|
|
138
143
|
const source = flags.source ?? loaded.config.framework.source;
|
|
144
|
+
let networkApproved = false;
|
|
145
|
+
const ensureApproved = async (reason) => {
|
|
146
|
+
if (networkApproved)
|
|
147
|
+
return;
|
|
148
|
+
await ensureNetworkApproved({ config: loaded.config, yes: flags.yes, reason });
|
|
149
|
+
networkApproved = true;
|
|
150
|
+
};
|
|
139
151
|
let tempRoot = null;
|
|
140
152
|
let extractRoot = null;
|
|
141
153
|
try {
|
|
@@ -146,6 +158,7 @@ export async function cmdUpgrade(opts) {
|
|
|
146
158
|
const isUrl = flags.bundle.startsWith("http://") || flags.bundle.startsWith("https://");
|
|
147
159
|
bundlePath = isUrl ? path.join(tempRoot, "bundle.tar.gz") : path.resolve(flags.bundle);
|
|
148
160
|
if (isUrl) {
|
|
161
|
+
await ensureApproved("upgrade downloads the bundle/checksum from the network");
|
|
149
162
|
await downloadToFile(flags.bundle, bundlePath);
|
|
150
163
|
}
|
|
151
164
|
const checksumValue = flags.checksum ?? "";
|
|
@@ -154,6 +167,7 @@ export async function cmdUpgrade(opts) {
|
|
|
154
167
|
? path.join(tempRoot, "bundle.tar.gz.sha256")
|
|
155
168
|
: path.resolve(checksumValue);
|
|
156
169
|
if (checksumIsUrl) {
|
|
170
|
+
await ensureApproved("upgrade downloads the bundle/checksum from the network");
|
|
157
171
|
await downloadToFile(checksumValue, checksumPath);
|
|
158
172
|
}
|
|
159
173
|
}
|
|
@@ -162,6 +176,7 @@ export async function cmdUpgrade(opts) {
|
|
|
162
176
|
const releaseUrl = flags.tag
|
|
163
177
|
? `https://api.github.com/repos/${owner}/${repo}/releases/tags/${flags.tag}`
|
|
164
178
|
: `https://api.github.com/repos/${owner}/${repo}/releases/latest`;
|
|
179
|
+
await ensureApproved("upgrade fetches release metadata and downloads assets from the network");
|
|
165
180
|
const release = (await fetchJson(releaseUrl));
|
|
166
181
|
const assets = Array.isArray(release.assets) ? release.assets : [];
|
|
167
182
|
const assetName = flags.asset ?? DEFAULT_UPGRADE_ASSET;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare const IDE_SYNC_USAGE = "Usage: agentplane ide sync";
|
|
2
2
|
export declare const IDE_SYNC_USAGE_EXAMPLE = "agentplane ide sync";
|
|
3
|
-
export { TASK_NEW_USAGE, TASK_NEW_USAGE_EXAMPLE, TASK_ADD_USAGE, TASK_ADD_USAGE_EXAMPLE, TASK_SCRUB_USAGE, TASK_SCRUB_USAGE_EXAMPLE, TASK_UPDATE_USAGE, TASK_UPDATE_USAGE_EXAMPLE, TASK_SCAFFOLD_USAGE, TASK_SCAFFOLD_USAGE_EXAMPLE, TASK_DOC_SET_USAGE, TASK_DOC_SET_USAGE_EXAMPLE, TASK_DOC_SHOW_USAGE, TASK_DOC_SHOW_USAGE_EXAMPLE, START_USAGE, START_USAGE_EXAMPLE, BLOCK_USAGE, BLOCK_USAGE_EXAMPLE, FINISH_USAGE, FINISH_USAGE_EXAMPLE, VERIFY_USAGE, VERIFY_USAGE_EXAMPLE, dedupeStrings, cmdTaskNew, cmdTaskAdd, cmdTaskUpdate, cmdTaskScrub, cmdTaskListWithFilters, cmdTaskNext, cmdReady, cmdTaskSearch, cmdTaskScaffold, cmdTaskNormalize, cmdTaskMigrate, cmdTaskComment, cmdTaskSetStatus, cmdTaskShow, cmdTaskList, cmdTaskExport, cmdTaskLint, cmdTaskDocSet, cmdTaskDocShow, cmdStart, cmdBlock, cmdFinish, cmdVerify, } from "./task/index.js";
|
|
3
|
+
export { TASK_NEW_USAGE, TASK_NEW_USAGE_EXAMPLE, TASK_ADD_USAGE, TASK_ADD_USAGE_EXAMPLE, TASK_SCRUB_USAGE, TASK_SCRUB_USAGE_EXAMPLE, TASK_UPDATE_USAGE, TASK_UPDATE_USAGE_EXAMPLE, TASK_SCAFFOLD_USAGE, TASK_SCAFFOLD_USAGE_EXAMPLE, TASK_MIGRATE_DOC_USAGE, TASK_MIGRATE_DOC_USAGE_EXAMPLE, TASK_DOC_SET_USAGE, TASK_DOC_SET_USAGE_EXAMPLE, TASK_DOC_SHOW_USAGE, TASK_DOC_SHOW_USAGE_EXAMPLE, TASK_PLAN_USAGE, TASK_PLAN_USAGE_EXAMPLE, TASK_PLAN_SET_USAGE, TASK_PLAN_SET_USAGE_EXAMPLE, TASK_PLAN_APPROVE_USAGE, TASK_PLAN_APPROVE_USAGE_EXAMPLE, TASK_PLAN_REJECT_USAGE, TASK_PLAN_REJECT_USAGE_EXAMPLE, START_USAGE, START_USAGE_EXAMPLE, BLOCK_USAGE, BLOCK_USAGE_EXAMPLE, FINISH_USAGE, FINISH_USAGE_EXAMPLE, VERIFY_USAGE, VERIFY_USAGE_EXAMPLE, TASK_VERIFY_USAGE, TASK_VERIFY_USAGE_EXAMPLE, dedupeStrings, cmdTaskNew, cmdTaskAdd, cmdTaskUpdate, cmdTaskScrub, cmdTaskListWithFilters, cmdTaskNext, cmdReady, cmdTaskSearch, cmdTaskScaffold, cmdTaskNormalize, cmdTaskMigrate, cmdTaskMigrateDoc, cmdTaskPlan, cmdTaskComment, cmdTaskSetStatus, cmdTaskShow, cmdTaskList, cmdTaskExport, cmdTaskLint, cmdTaskDocSet, cmdTaskDocShow, cmdStart, cmdBlock, cmdFinish, cmdVerify, cmdTaskVerify, } from "./task/index.js";
|
|
4
4
|
export { BRANCH_BASE_USAGE, BRANCH_BASE_USAGE_EXAMPLE, BRANCH_STATUS_USAGE, BRANCH_STATUS_USAGE_EXAMPLE, BRANCH_REMOVE_USAGE, BRANCH_REMOVE_USAGE_EXAMPLE, WORK_START_USAGE, WORK_START_USAGE_EXAMPLE, CLEANUP_MERGED_USAGE, CLEANUP_MERGED_USAGE_EXAMPLE, gitInitRepo, resolveInitBaseBranch, promptInitBaseBranch, ensureInitCommit, cmdWorkStart, cmdCleanupMerged, cmdBranchBaseGet, cmdBranchBaseSet, cmdBranchBaseClear, cmdBranchBaseExplain, cmdBranchStatus, cmdBranchRemove, } from "./branch/index.js";
|
|
5
5
|
export { PR_OPEN_USAGE, PR_OPEN_USAGE_EXAMPLE, PR_UPDATE_USAGE, PR_UPDATE_USAGE_EXAMPLE, PR_CHECK_USAGE, PR_CHECK_USAGE_EXAMPLE, PR_NOTE_USAGE, PR_NOTE_USAGE_EXAMPLE, INTEGRATE_USAGE, INTEGRATE_USAGE_EXAMPLE, cmdPrOpen, cmdPrUpdate, cmdPrCheck, cmdPrNote, cmdIntegrate, } from "./pr/index.js";
|
|
6
6
|
export { GUARD_COMMIT_USAGE, GUARD_COMMIT_USAGE_EXAMPLE, COMMIT_USAGE, COMMIT_USAGE_EXAMPLE, suggestAllowPrefixes, cmdGuardClean, cmdGuardSuggestAllow, cmdGuardCommit, cmdCommit, } from "./guard/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,+BAA+B,CAAC;AAC3D,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAE5D,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,cAAc,EACd,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,EACzB,mBAAmB,EACnB,2BAA2B,EAC3B,kBAAkB,EAClB,0BAA0B,EAC1B,mBAAmB,EACnB,2BAA2B,EAC3B,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV,UAAU,EACV,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,WAAW,EACX,QAAQ,EACR,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,aAAa,EACb,WAAW,EACX,aAAa,EACb,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,+BAA+B,CAAC;AAC3D,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAE5D,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,cAAc,EACd,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,EACzB,mBAAmB,EACnB,2BAA2B,EAC3B,sBAAsB,EACtB,8BAA8B,EAC9B,kBAAkB,EAClB,0BAA0B,EAC1B,mBAAmB,EACnB,2BAA2B,EAC3B,eAAe,EACf,uBAAuB,EACvB,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,EACvB,+BAA+B,EAC/B,sBAAsB,EACtB,8BAA8B,EAC9B,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EACzB,aAAa,EACb,UAAU,EACV,UAAU,EACV,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,WAAW,EACX,QAAQ,EACR,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,aAAa,EACb,WAAW,EACX,aAAa,EACb,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,aAAa,GACd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,4BAA4B,EAC5B,WAAW,EACX,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,uBAAuB,EACvB,cAAc,EACd,sBAAsB,EACtB,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,uBAAuB,EACvB,SAAS,EACT,WAAW,EACX,UAAU,EACV,SAAS,EACT,YAAY,GACb,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,SAAS,GACV,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Thin public re-export layer: keep CLI imports stable while command implementations live by domain.
|
|
2
2
|
export const IDE_SYNC_USAGE = "Usage: agentplane ide sync";
|
|
3
3
|
export const IDE_SYNC_USAGE_EXAMPLE = "agentplane ide sync";
|
|
4
|
-
export { TASK_NEW_USAGE, TASK_NEW_USAGE_EXAMPLE, TASK_ADD_USAGE, TASK_ADD_USAGE_EXAMPLE, TASK_SCRUB_USAGE, TASK_SCRUB_USAGE_EXAMPLE, TASK_UPDATE_USAGE, TASK_UPDATE_USAGE_EXAMPLE, TASK_SCAFFOLD_USAGE, TASK_SCAFFOLD_USAGE_EXAMPLE, TASK_DOC_SET_USAGE, TASK_DOC_SET_USAGE_EXAMPLE, TASK_DOC_SHOW_USAGE, TASK_DOC_SHOW_USAGE_EXAMPLE, START_USAGE, START_USAGE_EXAMPLE, BLOCK_USAGE, BLOCK_USAGE_EXAMPLE, FINISH_USAGE, FINISH_USAGE_EXAMPLE, VERIFY_USAGE, VERIFY_USAGE_EXAMPLE, dedupeStrings, cmdTaskNew, cmdTaskAdd, cmdTaskUpdate, cmdTaskScrub, cmdTaskListWithFilters, cmdTaskNext, cmdReady, cmdTaskSearch, cmdTaskScaffold, cmdTaskNormalize, cmdTaskMigrate, cmdTaskComment, cmdTaskSetStatus, cmdTaskShow, cmdTaskList, cmdTaskExport, cmdTaskLint, cmdTaskDocSet, cmdTaskDocShow, cmdStart, cmdBlock, cmdFinish, cmdVerify, } from "./task/index.js";
|
|
4
|
+
export { TASK_NEW_USAGE, TASK_NEW_USAGE_EXAMPLE, TASK_ADD_USAGE, TASK_ADD_USAGE_EXAMPLE, TASK_SCRUB_USAGE, TASK_SCRUB_USAGE_EXAMPLE, TASK_UPDATE_USAGE, TASK_UPDATE_USAGE_EXAMPLE, TASK_SCAFFOLD_USAGE, TASK_SCAFFOLD_USAGE_EXAMPLE, TASK_MIGRATE_DOC_USAGE, TASK_MIGRATE_DOC_USAGE_EXAMPLE, TASK_DOC_SET_USAGE, TASK_DOC_SET_USAGE_EXAMPLE, TASK_DOC_SHOW_USAGE, TASK_DOC_SHOW_USAGE_EXAMPLE, TASK_PLAN_USAGE, TASK_PLAN_USAGE_EXAMPLE, TASK_PLAN_SET_USAGE, TASK_PLAN_SET_USAGE_EXAMPLE, TASK_PLAN_APPROVE_USAGE, TASK_PLAN_APPROVE_USAGE_EXAMPLE, TASK_PLAN_REJECT_USAGE, TASK_PLAN_REJECT_USAGE_EXAMPLE, START_USAGE, START_USAGE_EXAMPLE, BLOCK_USAGE, BLOCK_USAGE_EXAMPLE, FINISH_USAGE, FINISH_USAGE_EXAMPLE, VERIFY_USAGE, VERIFY_USAGE_EXAMPLE, TASK_VERIFY_USAGE, TASK_VERIFY_USAGE_EXAMPLE, dedupeStrings, cmdTaskNew, cmdTaskAdd, cmdTaskUpdate, cmdTaskScrub, cmdTaskListWithFilters, cmdTaskNext, cmdReady, cmdTaskSearch, cmdTaskScaffold, cmdTaskNormalize, cmdTaskMigrate, cmdTaskMigrateDoc, cmdTaskPlan, cmdTaskComment, cmdTaskSetStatus, cmdTaskShow, cmdTaskList, cmdTaskExport, cmdTaskLint, cmdTaskDocSet, cmdTaskDocShow, cmdStart, cmdBlock, cmdFinish, cmdVerify, cmdTaskVerify, } from "./task/index.js";
|
|
5
5
|
export { BRANCH_BASE_USAGE, BRANCH_BASE_USAGE_EXAMPLE, BRANCH_STATUS_USAGE, BRANCH_STATUS_USAGE_EXAMPLE, BRANCH_REMOVE_USAGE, BRANCH_REMOVE_USAGE_EXAMPLE, WORK_START_USAGE, WORK_START_USAGE_EXAMPLE, CLEANUP_MERGED_USAGE, CLEANUP_MERGED_USAGE_EXAMPLE, gitInitRepo, resolveInitBaseBranch, promptInitBaseBranch, ensureInitCommit, cmdWorkStart, cmdCleanupMerged, cmdBranchBaseGet, cmdBranchBaseSet, cmdBranchBaseClear, cmdBranchBaseExplain, cmdBranchStatus, cmdBranchRemove, } from "./branch/index.js";
|
|
6
6
|
export { PR_OPEN_USAGE, PR_OPEN_USAGE_EXAMPLE, PR_UPDATE_USAGE, PR_UPDATE_USAGE_EXAMPLE, PR_CHECK_USAGE, PR_CHECK_USAGE_EXAMPLE, PR_NOTE_USAGE, PR_NOTE_USAGE_EXAMPLE, INTEGRATE_USAGE, INTEGRATE_USAGE_EXAMPLE, cmdPrOpen, cmdPrUpdate, cmdPrCheck, cmdPrNote, cmdIntegrate, } from "./pr/index.js";
|
|
7
7
|
export { GUARD_COMMIT_USAGE, GUARD_COMMIT_USAGE_EXAMPLE, COMMIT_USAGE, COMMIT_USAGE_EXAMPLE, suggestAllowPrefixes, cmdGuardClean, cmdGuardSuggestAllow, cmdGuardCommit, cmdCommit, } from "./guard/index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-log.d.ts","sourceRoot":"","sources":["../../src/shared/git-log.ts"],"names":[],"mappings":"AAAA,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAYxF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function parseGitLogHashSubject(stdout) {
|
|
2
|
+
const trimmed = stdout.trimEnd();
|
|
3
|
+
const idx = trimmed.indexOf("\0");
|
|
4
|
+
if (idx === -1) {
|
|
5
|
+
throw new Error("Unexpected git log output (missing NUL separator)");
|
|
6
|
+
}
|
|
7
|
+
const hash = trimmed.slice(0, idx).trim();
|
|
8
|
+
const subject = trimmed.slice(idx + 1);
|
|
9
|
+
if (!hash)
|
|
10
|
+
throw new Error("Unexpected git log output (missing hash)");
|
|
11
|
+
if (!subject)
|
|
12
|
+
throw new Error("Unexpected git log output (missing subject)");
|
|
13
|
+
return { hash, subject };
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-path.d.ts","sourceRoot":"","sources":["../../src/shared/git-path.ts"],"names":[],"mappings":"AAgBA,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAI7D;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAS/E"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
function normalizeGitPath(raw) {
|
|
3
|
+
let p = (raw ?? "").trim();
|
|
4
|
+
if (!p)
|
|
5
|
+
return "";
|
|
6
|
+
// Git reports repo-relative POSIX paths. Allow user-provided prefixes to be Windows-y.
|
|
7
|
+
p = p.replaceAll("\\", "/");
|
|
8
|
+
while (p.startsWith("./"))
|
|
9
|
+
p = p.slice(2);
|
|
10
|
+
p = p.replaceAll(/\/{2,}/g, "/");
|
|
11
|
+
p = p.replaceAll(/\/+$/g, "");
|
|
12
|
+
p = p.replaceAll(/^\/+/g, "");
|
|
13
|
+
return p;
|
|
14
|
+
}
|
|
15
|
+
export function normalizeGitPathPrefix(prefix) {
|
|
16
|
+
const raw = (prefix ?? "").trim();
|
|
17
|
+
if (raw === "." || raw === "./" || raw === ".\\")
|
|
18
|
+
return ".";
|
|
19
|
+
return normalizeGitPath(raw);
|
|
20
|
+
}
|
|
21
|
+
export function gitPathIsUnderPrefix(candidate, prefix) {
|
|
22
|
+
const c = normalizeGitPath(candidate);
|
|
23
|
+
const p = normalizeGitPathPrefix(prefix);
|
|
24
|
+
if (p === "." || p === "")
|
|
25
|
+
return true;
|
|
26
|
+
if (c === p)
|
|
27
|
+
return true;
|
|
28
|
+
const rel = path.posix.relative(p, c);
|
|
29
|
+
return rel === "" || (!rel.startsWith("..") && !path.posix.isAbsolute(rel));
|
|
30
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../src/shared/guards.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type ProtectedPathKind = "tasks" | "policy" | "config" | "hooks" | "ci";
|
|
2
|
+
export type ProtectedPathOverride = {
|
|
3
|
+
kind: ProtectedPathKind;
|
|
4
|
+
cliFlag: string;
|
|
5
|
+
envVar: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function getProtectedPathOverride(kind: ProtectedPathKind): ProtectedPathOverride;
|
|
8
|
+
export declare function protectedPathKindForFile(opts: {
|
|
9
|
+
filePath: string;
|
|
10
|
+
tasksPath: string;
|
|
11
|
+
}): ProtectedPathKind | null;
|
|
12
|
+
//# sourceMappingURL=protected-paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protected-paths.d.ts","sourceRoot":"","sources":["../../src/shared/protected-paths.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;AAE/E,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAQF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,iBAAiB,GAAG,qBAAqB,CAkBvF;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,iBAAiB,GAAG,IAAI,CA6B3B"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
function pathIsUnder(candidate, prefix) {
|
|
2
|
+
if (prefix === "." || prefix === "")
|
|
3
|
+
return true;
|
|
4
|
+
if (candidate === prefix)
|
|
5
|
+
return true;
|
|
6
|
+
return candidate.startsWith(`${prefix}/`);
|
|
7
|
+
}
|
|
8
|
+
export function getProtectedPathOverride(kind) {
|
|
9
|
+
switch (kind) {
|
|
10
|
+
case "tasks": {
|
|
11
|
+
return { kind, cliFlag: "--allow-tasks", envVar: "AGENTPLANE_ALLOW_TASKS" };
|
|
12
|
+
}
|
|
13
|
+
case "policy": {
|
|
14
|
+
return { kind, cliFlag: "--allow-policy", envVar: "AGENTPLANE_ALLOW_POLICY" };
|
|
15
|
+
}
|
|
16
|
+
case "config": {
|
|
17
|
+
return { kind, cliFlag: "--allow-config", envVar: "AGENTPLANE_ALLOW_CONFIG" };
|
|
18
|
+
}
|
|
19
|
+
case "hooks": {
|
|
20
|
+
return { kind, cliFlag: "--allow-hooks", envVar: "AGENTPLANE_ALLOW_HOOKS" };
|
|
21
|
+
}
|
|
22
|
+
case "ci": {
|
|
23
|
+
return { kind, cliFlag: "--allow-ci", envVar: "AGENTPLANE_ALLOW_CI" };
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export function protectedPathKindForFile(opts) {
|
|
28
|
+
const p = opts.filePath;
|
|
29
|
+
if (!p)
|
|
30
|
+
return null;
|
|
31
|
+
if (p === opts.tasksPath)
|
|
32
|
+
return "tasks";
|
|
33
|
+
// "Rules of the game": authoring/agent policies and registry.
|
|
34
|
+
if (p === "AGENTS.md" ||
|
|
35
|
+
p === "packages/agentplane/assets/AGENTS.md" ||
|
|
36
|
+
pathIsUnder(p, ".agentplane/agents")) {
|
|
37
|
+
return "policy";
|
|
38
|
+
}
|
|
39
|
+
// Framework config and task backend config determine enforcement behavior.
|
|
40
|
+
if (p === ".agentplane/config.json" || pathIsUnder(p, ".agentplane/backends")) {
|
|
41
|
+
return "config";
|
|
42
|
+
}
|
|
43
|
+
// Local hook orchestrator is a quality gate for commits.
|
|
44
|
+
if (p === "lefthook.yml")
|
|
45
|
+
return "hooks";
|
|
46
|
+
// CI workflows are "remote hooks" for quality gates.
|
|
47
|
+
if (pathIsUnder(p, ".github/workflows") || pathIsUnder(p, ".github/actions")) {
|
|
48
|
+
return "ci";
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../../src/shared/strings.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAWvD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function dedupeStrings(items) {
|
|
2
|
+
const seen = new Set();
|
|
3
|
+
const out = [];
|
|
4
|
+
for (const item of items) {
|
|
5
|
+
const trimmed = item.trim();
|
|
6
|
+
if (!trimmed)
|
|
7
|
+
continue;
|
|
8
|
+
if (seen.has(trimmed))
|
|
9
|
+
continue;
|
|
10
|
+
seen.add(trimmed);
|
|
11
|
+
out.push(trimmed);
|
|
12
|
+
}
|
|
13
|
+
return out;
|
|
14
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentplane",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "Agent Plane CLI for task workflows, recipes, and project automation.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agentplane",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"prepublishOnly": "npm run prepack"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@agentplaneorg/core": "0.1.
|
|
57
|
+
"@agentplaneorg/core": "0.1.9",
|
|
58
58
|
"yauzl": "^2.10.0"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|