orbitmap 0.4.2 → 0.4.4
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 +112 -18
- package/dist/adapters/cloud.d.ts +63 -21
- package/dist/adapters/cloud.js +108 -29
- package/dist/adapters/cloud.js.map +1 -1
- package/dist/adapters/factory.d.ts +3 -0
- package/dist/adapters/factory.js +8 -1
- package/dist/adapters/factory.js.map +1 -1
- package/dist/adapters/local/adapter.d.ts +17 -20
- package/dist/adapters/local/adapter.js +28 -21
- package/dist/adapters/local/adapter.js.map +1 -1
- package/dist/adapters/local/context.d.ts +1 -1
- package/dist/adapters/local/context.js +10 -2
- package/dist/adapters/local/context.js.map +1 -1
- package/dist/adapters/local/entities/planning.d.ts +5 -1
- package/dist/adapters/local/entities/planning.js +16 -3
- package/dist/adapters/local/entities/planning.js.map +1 -1
- package/dist/adapters/local/entities/tasks.d.ts +9 -1
- package/dist/adapters/local/entities/tasks.js +47 -5
- package/dist/adapters/local/entities/tasks.js.map +1 -1
- package/dist/adapters/local/entities/work-items.d.ts +14 -30
- package/dist/adapters/local/entities/work-items.js +63 -47
- package/dist/adapters/local/entities/work-items.js.map +1 -1
- package/dist/adapters/local/rules.d.ts +4 -4
- package/dist/adapters/local/rules.js +4 -19
- package/dist/adapters/local/rules.js.map +1 -1
- package/dist/adapters/local/shapes.d.ts +27 -7
- package/dist/adapters/local/shapes.js +41 -5
- package/dist/adapters/local/shapes.js.map +1 -1
- package/dist/adapters/local/store.d.ts +55 -6
- package/dist/adapters/local/store.js +122 -8
- package/dist/adapters/local/store.js.map +1 -1
- package/dist/adapters/local/types.d.ts +11 -2
- package/dist/adapters/local/types.js +9 -2
- package/dist/adapters/local/types.js.map +1 -1
- package/dist/adapters/types.d.ts +30 -20
- package/dist/agent-instructions.d.ts +43 -12
- package/dist/agent-instructions.js +1133 -170
- package/dist/agent-instructions.js.map +1 -1
- package/dist/area-directories.d.ts +75 -0
- package/dist/area-directories.js +162 -0
- package/dist/area-directories.js.map +1 -0
- package/dist/area-grouping.d.ts +55 -0
- package/dist/area-grouping.js +72 -0
- package/dist/area-grouping.js.map +1 -0
- package/dist/commands/areas.js +30 -2
- package/dist/commands/areas.js.map +1 -1
- package/dist/commands/assign.d.ts +1 -0
- package/dist/commands/assign.js +2 -0
- package/dist/commands/assign.js.map +1 -1
- package/dist/commands/context.d.ts +95 -0
- package/dist/commands/context.js +104 -2
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/create.d.ts +1 -0
- package/dist/commands/create.js +19 -14
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/dep.js +5 -8
- package/dist/commands/dep.js.map +1 -1
- package/dist/commands/doc-import.d.ts +1 -0
- package/dist/commands/doc-import.js +8 -26
- package/dist/commands/doc-import.js.map +1 -1
- package/dist/commands/doc-patch.js +16 -52
- package/dist/commands/doc-patch.js.map +1 -1
- package/dist/commands/doc-share.js +4 -0
- package/dist/commands/doc-share.js.map +1 -1
- package/dist/commands/doc-update.js +4 -8
- package/dist/commands/doc-update.js.map +1 -1
- package/dist/commands/doc.js +7 -12
- package/dist/commands/doc.js.map +1 -1
- package/dist/commands/docs-cache.js +23 -10
- package/dist/commands/docs-cache.js.map +1 -1
- package/dist/commands/docs.js +29 -10
- package/dist/commands/docs.js.map +1 -1
- package/dist/commands/get.js +8 -10
- package/dist/commands/get.js.map +1 -1
- package/dist/commands/ideas.d.ts +3 -1
- package/dist/commands/ideas.js +26 -49
- package/dist/commands/ideas.js.map +1 -1
- package/dist/commands/init.d.ts +24 -1
- package/dist/commands/init.js +0 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/intent.d.ts +16 -0
- package/dist/commands/intent.js +61 -18
- package/dist/commands/intent.js.map +1 -1
- package/dist/commands/issues.d.ts +3 -1
- package/dist/commands/issues.js +47 -72
- package/dist/commands/issues.js.map +1 -1
- package/dist/commands/log.d.ts +14 -2
- package/dist/commands/log.js +35 -20
- package/dist/commands/log.js.map +1 -1
- package/dist/commands/mission.d.ts +8 -0
- package/dist/commands/mission.js +58 -18
- package/dist/commands/mission.js.map +1 -1
- package/dist/commands/orbit.d.ts +7 -1
- package/dist/commands/orbit.js +13 -24
- package/dist/commands/orbit.js.map +1 -1
- package/dist/commands/setup-agent.d.ts +97 -4
- package/dist/commands/setup-agent.js +273 -40
- package/dist/commands/setup-agent.js.map +1 -1
- package/dist/commands/setup-mcp.d.ts +2 -0
- package/dist/commands/setup-mcp.js +17 -40
- package/dist/commands/setup-mcp.js.map +1 -1
- package/dist/commands/start.d.ts +43 -0
- package/dist/commands/start.js +158 -3
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.d.ts +1 -0
- package/dist/commands/status.js +5 -15
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/subtask.d.ts +1 -0
- package/dist/commands/subtask.js +9 -2
- package/dist/commands/subtask.js.map +1 -1
- package/dist/commands/task-edit-content.js +4 -8
- package/dist/commands/task-edit-content.js.map +1 -1
- package/dist/commands/task.d.ts +7 -0
- package/dist/commands/task.js +5 -2
- package/dist/commands/task.js.map +1 -1
- package/dist/commands/tasks.d.ts +35 -0
- package/dist/commands/tasks.js +45 -9
- package/dist/commands/tasks.js.map +1 -1
- package/dist/commands/vibes.d.ts +3 -1
- package/dist/commands/vibes.js +41 -31
- package/dist/commands/vibes.js.map +1 -1
- package/dist/config.d.ts +11 -0
- package/dist/config.js +14 -1
- package/dist/config.js.map +1 -1
- package/dist/doc-cache.d.ts +74 -5
- package/dist/doc-cache.js +106 -22
- package/dist/doc-cache.js.map +1 -1
- package/dist/enums.d.ts +26 -0
- package/dist/enums.js +53 -0
- package/dist/enums.js.map +1 -0
- package/dist/errors.d.ts +67 -0
- package/dist/errors.js +82 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.js +169 -60
- package/dist/index.js.map +1 -1
- package/dist/mcp-config.d.ts +42 -1
- package/dist/mcp-config.js +82 -2
- package/dist/mcp-config.js.map +1 -1
- package/dist/oauth.js +10 -10
- package/dist/output.d.ts +12 -0
- package/dist/output.js +39 -1
- package/dist/output.js.map +1 -1
- package/dist/paths.d.ts +40 -0
- package/dist/paths.js +174 -9
- package/dist/paths.js.map +1 -1
- package/dist/project-config.d.ts +42 -1
- package/dist/project-config.js +51 -0
- package/dist/project-config.js.map +1 -1
- package/dist/work-log.d.ts +104 -0
- package/dist/work-log.js +181 -0
- package/dist/work-log.js.map +1 -0
- package/dist/workspace-resolve.d.ts +179 -9
- package/dist/workspace-resolve.js +288 -20
- package/dist/workspace-resolve.js.map +1 -1
- package/dist/write-target.d.ts +56 -0
- package/dist/write-target.js +170 -0
- package/dist/write-target.js.map +1 -0
- package/package.json +3 -2
- package/dist/commands/create-project.d.ts +0 -6
- package/dist/commands/create-project.js +0 -28
- package/dist/commands/create-project.js.map +0 -1
- package/dist/commands/projects.d.ts +0 -3
- package/dist/commands/projects.js +0 -28
- package/dist/commands/projects.js.map +0 -1
package/dist/commands/context.js
CHANGED
|
@@ -1,16 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `orbitmap context` — the primary context source for AI agents (intent IN-rwb5qu).
|
|
3
|
+
*
|
|
4
|
+
* On top of the server/adapter `/context` envelope (agent, area, active mission, tasks,
|
|
5
|
+
* documents) the command reports everything the *local* resolution knows, so that an agent
|
|
6
|
+
* never has to be told any of it out of band (CLAUDE.md and friends stay static):
|
|
7
|
+
*
|
|
8
|
+
* - which workspace this invocation is scoped to, and where its identity came from,
|
|
9
|
+
* - the full directory → area map visible from the current directory,
|
|
10
|
+
* - which area the current directory resolves to, and through which rung of the ladder.
|
|
11
|
+
*
|
|
12
|
+
* The `--json` field names `workspace`, `areas_map`, `resolved_area` and `area_source` are a
|
|
13
|
+
* contract: agents parse them, so they are additive and must stay stable. The historical
|
|
14
|
+
* `data` envelope is passed through untouched.
|
|
15
|
+
*/
|
|
16
|
+
import { LocalStore } from '../adapters/local/store.js';
|
|
1
17
|
import { createAdapter } from '../adapters/factory.js';
|
|
2
18
|
import { formatOutput, printError, formatTable } from '../output.js';
|
|
19
|
+
import { resolveAreaDirectoryMap, resolveWorkspaceContext, } from '../workspace-resolve.js';
|
|
20
|
+
/**
|
|
21
|
+
* Read the workspace display name from a local `workspace.yml`.
|
|
22
|
+
*
|
|
23
|
+
* Best effort: a missing or malformed file simply leaves the name unknown, because
|
|
24
|
+
* `orbitmap context` is exactly the command someone runs to find out why their setup is
|
|
25
|
+
* broken — it must not be the one that refuses to answer.
|
|
26
|
+
*/
|
|
27
|
+
async function readLocalWorkspaceIdentity(workspacePath) {
|
|
28
|
+
try {
|
|
29
|
+
const workspace = await new LocalStore(workspacePath).readWorkspace();
|
|
30
|
+
return { slug: workspace.slug || null, name: workspace.name || null };
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return { slug: null, name: null };
|
|
34
|
+
}
|
|
35
|
+
}
|
|
3
36
|
export async function contextCommand(options) {
|
|
4
37
|
try {
|
|
5
38
|
const client = await createAdapter(options.area);
|
|
6
39
|
const response = (await client.getContext(options.area));
|
|
40
|
+
// Same ladder the adapter itself ran (pure file/env resolution, no network), re-read
|
|
41
|
+
// here so the command can report *why* it resolved the way it did.
|
|
42
|
+
const resolved = await resolveWorkspaceContext({ area: options.area });
|
|
43
|
+
const areasMap = resolveAreaDirectoryMap({
|
|
44
|
+
area: options.area,
|
|
45
|
+
config: resolved.config,
|
|
46
|
+
link: resolved.link,
|
|
47
|
+
});
|
|
48
|
+
const local = resolved.workspacePath
|
|
49
|
+
? await readLocalWorkspaceIdentity(resolved.workspacePath)
|
|
50
|
+
: { slug: null, name: null };
|
|
51
|
+
const workspace = {
|
|
52
|
+
slug: resolved.workspace ?? local.slug,
|
|
53
|
+
name: local.name,
|
|
54
|
+
source: resolved.workspaceSource ?? null,
|
|
55
|
+
path: resolved.workspacePath ?? null,
|
|
56
|
+
};
|
|
57
|
+
// The adapter is the ground truth for which area a command lands in: local mode lets
|
|
58
|
+
// `workspace.yml`'s `default_area` outrank a global-config area, so reporting the bare
|
|
59
|
+
// ladder result here would tell an agent it is in an area nothing else ever uses.
|
|
60
|
+
const effectiveArea = response.data.area?.slug ?? resolved.area ?? null;
|
|
61
|
+
const areaSource = effectiveArea === (resolved.area ?? null)
|
|
62
|
+
? (resolved.areaSource ?? null)
|
|
63
|
+
: 'workspace-default';
|
|
64
|
+
const output = {
|
|
65
|
+
...response,
|
|
66
|
+
workspace,
|
|
67
|
+
areas_map: areasMap,
|
|
68
|
+
resolved_area: effectiveArea,
|
|
69
|
+
area_source: areaSource,
|
|
70
|
+
mode: resolved.mode,
|
|
71
|
+
cwd: process.cwd(),
|
|
72
|
+
};
|
|
7
73
|
if (options.json) {
|
|
8
|
-
console.log(formatOutput(
|
|
74
|
+
console.log(formatOutput(output, true));
|
|
9
75
|
return;
|
|
10
76
|
}
|
|
11
|
-
const { agent, area, active_mission, tasks, documents } = response.data;
|
|
77
|
+
const { agent, area, areas, active_mission, open_intents, tasks, documents } = response.data;
|
|
12
78
|
console.log(`Agent: ${agent.name} (${agent.slug})`);
|
|
13
79
|
console.log(`ID: ${agent.id}`);
|
|
80
|
+
console.log(`\nWorkspace: ${formatWorkspace(workspace)}`);
|
|
81
|
+
if (workspace.source)
|
|
82
|
+
console.log(`Source: ${workspace.source}`);
|
|
83
|
+
if (workspace.path)
|
|
84
|
+
console.log(`Path: ${workspace.path}`);
|
|
85
|
+
console.log(`Mode: ${output.mode}`);
|
|
86
|
+
console.log(`\nResolved area: ${output.resolved_area
|
|
87
|
+
? `${output.resolved_area} (source: ${output.area_source ?? 'unknown'})`
|
|
88
|
+
: '(none) — workspace scope; pass --area <slug> for area-scoped commands'}`);
|
|
89
|
+
console.log(`Cwd: ${output.cwd}`);
|
|
14
90
|
if (area) {
|
|
15
91
|
console.log(`\nArea: ${area.name} (${area.slug})`);
|
|
16
92
|
console.log(`ID: ${area.id}`);
|
|
@@ -20,12 +96,26 @@ export async function contextCommand(options) {
|
|
|
20
96
|
console.log(`Git: ${area.git_url}`);
|
|
21
97
|
console.log(`Branch: ${area.default_branch}`);
|
|
22
98
|
}
|
|
99
|
+
// Printed even when an area did resolve: knowing the sibling areas is what stops an
|
|
100
|
+
// agent from listing them separately, which is the behaviour this whole pivot removes.
|
|
101
|
+
if (areas && areas.length > 0) {
|
|
102
|
+
console.log(`\nAreas in this workspace (${areas.length}):`);
|
|
103
|
+
for (const a of areas) {
|
|
104
|
+
console.log(` ${a.slug.padEnd(24)} ${a.name} (${a.role})`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
23
107
|
if (active_mission) {
|
|
24
108
|
const number = active_mission.display_number
|
|
25
109
|
? `${active_mission.display_number} `
|
|
26
110
|
: '';
|
|
27
111
|
console.log(`\nActive mission: ${number}${active_mission.name} [${active_mission.status}]`);
|
|
28
112
|
}
|
|
113
|
+
if (open_intents && open_intents.length > 0) {
|
|
114
|
+
console.log(`\nOpen intents (${open_intents.length}):`);
|
|
115
|
+
for (const intent of open_intents) {
|
|
116
|
+
console.log(` ${intent.number.padEnd(12)} ${intent.name} [${intent.status}]`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
29
119
|
if (tasks.length > 0) {
|
|
30
120
|
console.log(`\nActive tasks (${tasks.length}):`);
|
|
31
121
|
console.log(formatTable(['#', 'Title', 'Status', 'Priority'], tasks.map((t) => [t.display_number ?? t.task_number, t.title, t.status, t.priority])));
|
|
@@ -34,10 +124,22 @@ export async function contextCommand(options) {
|
|
|
34
124
|
console.log(`\nDocuments (${documents.length}):`);
|
|
35
125
|
console.log(formatTable(['Title', 'Type', 'Shared'], documents.map((d) => [d.title, d.type, d._shared ? 'yes' : ''])));
|
|
36
126
|
}
|
|
127
|
+
if (areasMap.length > 0) {
|
|
128
|
+
console.log(`\nMapped directories (${areasMap.length}):`);
|
|
129
|
+
console.log(formatTable(['Area', 'Directory', 'From'], areasMap.map((m) => [m.area, m.dir, m.from])));
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
console.log('\nMapped directories: none (no `areas` map in .orbitmap/config.json)');
|
|
133
|
+
}
|
|
37
134
|
}
|
|
38
135
|
catch (error) {
|
|
39
136
|
printError(error, options.json);
|
|
40
137
|
process.exitCode = 1;
|
|
41
138
|
}
|
|
42
139
|
}
|
|
140
|
+
function formatWorkspace(workspace) {
|
|
141
|
+
if (workspace.name && workspace.slug)
|
|
142
|
+
return `${workspace.name} (${workspace.slug})`;
|
|
143
|
+
return workspace.name ?? workspace.slug ?? '(not resolved)';
|
|
144
|
+
}
|
|
43
145
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/create.js
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import { createAdapter } from '../adapters/factory.js';
|
|
2
|
-
import {
|
|
2
|
+
import { confirmWriteTarget } from '../write-target.js';
|
|
3
3
|
import { formatOutput, printError, printSuccess } from '../output.js';
|
|
4
4
|
export async function createCommand(title, options) {
|
|
5
5
|
try {
|
|
6
|
+
await confirmWriteTarget('create task', options);
|
|
6
7
|
const client = await createAdapter(options.area);
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
sourceIssueId = options.fromIssue;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
8
|
+
// Every object reference below — the issue, the intent, the orbit, the agent — travels
|
|
9
|
+
// VERBATIM. `POST /tasks` validates `source_issue_id`, `intent_id`, `orbit_id` and
|
|
10
|
+
// `agent_id` with `App\Rules\EntityRef` (shape only) and resolves the uuid / display
|
|
11
|
+
// number / bare code / slug server-side (TS-av6332), answering 404 ISSUE_NOT_FOUND,
|
|
12
|
+
// INTENT_NOT_FOUND, ORBIT_NOT_FOUND or AGENT_NOT_FOUND when the reference is unknown.
|
|
13
|
+
// Resolving any of them here would duplicate server logic and cost an extra round trip —
|
|
14
|
+
// which is exactly what `--from-issue` used to pay for a `GET /issues/{id_or_number}`.
|
|
17
15
|
const response = (await client.createTask({
|
|
18
16
|
title,
|
|
19
17
|
description: options.desc,
|
|
@@ -23,7 +21,7 @@ export async function createCommand(title, options) {
|
|
|
23
21
|
agent_id: options.agentId,
|
|
24
22
|
branch_name: options.branch,
|
|
25
23
|
agent_instructions: options.instructions,
|
|
26
|
-
source_issue_id:
|
|
24
|
+
source_issue_id: options.fromIssue,
|
|
27
25
|
intent_id: options.intent,
|
|
28
26
|
orbit_id: options.orbit,
|
|
29
27
|
}));
|
|
@@ -33,8 +31,15 @@ export async function createCommand(title, options) {
|
|
|
33
31
|
}
|
|
34
32
|
const d = response.data;
|
|
35
33
|
let msg = `Task created: ${d.title} [${d.display_number ?? d.task_number}] (${d.status}, ${d.priority})`;
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
// Whether the link happened is the server's answer, not an inference from the flag: when
|
|
35
|
+
// `--from-issue` names an issue outside the target area the task is still created (201)
|
|
36
|
+
// with `source_issue_linked: false` and a warning. Reporting "Linked to issue …" off the
|
|
37
|
+
// flag alone would claim a link that does not exist.
|
|
38
|
+
if (d.source_issue_linked) {
|
|
39
|
+
msg += `\nLinked to issue ${d.source_issue_number ?? options.fromIssue} (now investigating)`;
|
|
40
|
+
}
|
|
41
|
+
if (d.source_issue_warning) {
|
|
42
|
+
msg += `\nWarning: ${d.source_issue_warning}`;
|
|
38
43
|
}
|
|
39
44
|
if (d._warnings?.length) {
|
|
40
45
|
for (const w of d._warnings) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAoBtE,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAa,EACb,OAcC;IAED,IAAI,CAAC;QACH,MAAM,kBAAkB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEjD,uFAAuF;QACvF,mFAAmF;QACnF,qFAAqF;QACrF,oFAAoF;QACpF,sFAAsF;QACtF,yFAAyF;QACzF,uFAAuF;QACvF,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC;YACxC,KAAK;YACL,WAAW,EAAE,OAAO,CAAC,IAAI;YACzB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,gBAAgB,EAAE,OAAO,CAAC,MAAM;YAChC,QAAQ,EAAE,OAAO,CAAC,OAAO;YACzB,WAAW,EAAE,OAAO,CAAC,MAAM;YAC3B,kBAAkB,EAAE,OAAO,CAAC,YAAY;YACxC,eAAe,EAAE,OAAO,CAAC,SAAS;YAClC,SAAS,EAAE,OAAO,CAAC,MAAM;YACzB,QAAQ,EAAE,OAAO,CAAC,KAAK;SACxB,CAAC,CAAmB,CAAC;QAEtB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;QACxB,IAAI,GAAG,GAAG,iBAAiB,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,WAAW,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC;QACzG,yFAAyF;QACzF,wFAAwF;QACxF,yFAAyF;QACzF,qDAAqD;QACrD,IAAI,CAAC,CAAC,mBAAmB,EAAE,CAAC;YAC1B,GAAG,IAAI,qBAAqB,CAAC,CAAC,mBAAmB,IAAI,OAAO,CAAC,SAAS,sBAAsB,CAAC;QAC/F,CAAC;QACD,IAAI,CAAC,CAAC,oBAAoB,EAAE,CAAC;YAC3B,GAAG,IAAI,cAAc,CAAC,CAAC,oBAAoB,EAAE,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;YACxB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;gBAC5B,GAAG,IAAI,cAAc,CAAC,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
|
package/dist/commands/dep.js
CHANGED
|
@@ -1,21 +1,17 @@
|
|
|
1
1
|
import { createAdapter } from '../adapters/factory.js';
|
|
2
|
-
import {
|
|
2
|
+
import { confirmWriteTarget } from '../write-target.js';
|
|
3
|
+
import { formatOutput, printError, printSuccess, printValidationError } from '../output.js';
|
|
3
4
|
const VALID_DEP_TYPES = ['depends_on', 'related'];
|
|
4
5
|
// ── Commands ──
|
|
5
6
|
export async function depAddCommand(taskId, targetTaskId, options) {
|
|
6
7
|
const depType = options.type ?? 'depends_on';
|
|
7
8
|
if (!VALID_DEP_TYPES.includes(depType)) {
|
|
8
9
|
const msg = `Invalid dependency type "${depType}". Valid: ${VALID_DEP_TYPES.join(', ')}`;
|
|
9
|
-
|
|
10
|
-
console.error(JSON.stringify({ error: { message: msg } }));
|
|
11
|
-
}
|
|
12
|
-
else {
|
|
13
|
-
console.error(`Error: ${msg}`);
|
|
14
|
-
}
|
|
15
|
-
process.exitCode = 1;
|
|
10
|
+
printValidationError(msg, options.json);
|
|
16
11
|
return;
|
|
17
12
|
}
|
|
18
13
|
try {
|
|
14
|
+
await confirmWriteTarget('add task dependency', options, 'existing');
|
|
19
15
|
const client = await createAdapter(options.area);
|
|
20
16
|
const response = (await client.addTaskDependency(taskId, {
|
|
21
17
|
target_task_id: targetTaskId,
|
|
@@ -35,6 +31,7 @@ export async function depAddCommand(taskId, targetTaskId, options) {
|
|
|
35
31
|
}
|
|
36
32
|
export async function depRemoveCommand(taskId, targetTaskId, options) {
|
|
37
33
|
try {
|
|
34
|
+
await confirmWriteTarget('remove task dependency', options, 'existing');
|
|
38
35
|
const client = await createAdapter(options.area);
|
|
39
36
|
const response = await client.removeTaskDependency(taskId, targetTaskId, options.type);
|
|
40
37
|
if (options.json) {
|
package/dist/commands/dep.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dep.js","sourceRoot":"","sources":["../../src/commands/dep.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"dep.js","sourceRoot":"","sources":["../../src/commands/dep.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAuB5F,MAAM,eAAe,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAElD,iBAAiB;AAEjB,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAc,EACd,YAAoB,EACpB,OAKC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC;IAE7C,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,4BAA4B,OAAO,aAAa,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACzF,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,kBAAkB,CAAC,qBAAqB,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE;YACvD,cAAc,EAAE,YAAY;YAC5B,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAmB,CAAC;QAEtB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,YAAY,CACV,SAAS,QAAQ,CAAC,IAAI,CAAC,IAAI,gBAAgB,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,MAAM,QAAQ,CAAC,IAAI,CAAC,cAAc,IAAI,YAAY,GAAG,EAC/H,KAAK,CACN,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAc,EACd,YAAoB,EACpB,OAIC;IAED,IAAI,CAAC;QACH,MAAM,kBAAkB,CAAC,wBAAwB,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAChD,MAAM,EACN,YAAY,EACZ,OAAO,CAAC,IAAI,CACoB,CAAC;QAEnC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,EAAE,IAAI,EAAE,CAAC;YACnB,YAAY,CACV,uBAAuB,QAAQ,CAAC,IAAI,CAAC,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,cAAc,GAAG,EACjF,KAAK,CACN,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,uBAAuB,MAAM,MAAM,YAAY,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
|
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
import { readFileSync, statSync } from 'node:fs';
|
|
2
2
|
import { createAdapter } from '../adapters/factory.js';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
'architecture',
|
|
7
|
-
'api',
|
|
8
|
-
'guide',
|
|
9
|
-
'decision',
|
|
10
|
-
'changelog',
|
|
11
|
-
'other',
|
|
12
|
-
];
|
|
3
|
+
import { confirmWriteTarget } from '../write-target.js';
|
|
4
|
+
import { formatOutput, printError, printSuccess, printValidationError } from '../output.js';
|
|
5
|
+
import { DOCUMENT_TYPES } from '../enums.js';
|
|
13
6
|
function formatBytes(bytes) {
|
|
14
7
|
if (bytes < 1024)
|
|
15
8
|
return `${bytes} B`;
|
|
@@ -18,15 +11,9 @@ function formatBytes(bytes) {
|
|
|
18
11
|
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
19
12
|
}
|
|
20
13
|
export async function docImportCommand(title, options) {
|
|
21
|
-
if (!
|
|
22
|
-
const msg = `Invalid document type "${options.type}". Valid: ${
|
|
23
|
-
|
|
24
|
-
console.error(JSON.stringify({ error: { message: msg } }));
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
console.error(`Error: ${msg}`);
|
|
28
|
-
}
|
|
29
|
-
process.exitCode = 1;
|
|
14
|
+
if (!DOCUMENT_TYPES.includes(options.type)) {
|
|
15
|
+
const msg = `Invalid document type "${options.type}". Valid: ${DOCUMENT_TYPES.join(', ')}`;
|
|
16
|
+
printValidationError(msg, options.json);
|
|
30
17
|
return;
|
|
31
18
|
}
|
|
32
19
|
// Verify file is readable before doing anything
|
|
@@ -35,16 +22,11 @@ export async function docImportCommand(title, options) {
|
|
|
35
22
|
}
|
|
36
23
|
catch (err) {
|
|
37
24
|
const msg = `Cannot read file "${options.file}": ${err instanceof Error ? err.message : String(err)}`;
|
|
38
|
-
|
|
39
|
-
console.error(JSON.stringify({ error: { message: msg } }));
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
console.error(`Error: ${msg}`);
|
|
43
|
-
}
|
|
44
|
-
process.exitCode = 1;
|
|
25
|
+
printValidationError(msg, options.json);
|
|
45
26
|
return;
|
|
46
27
|
}
|
|
47
28
|
try {
|
|
29
|
+
await confirmWriteTarget('import document', options);
|
|
48
30
|
const client = await createAdapter(options.area);
|
|
49
31
|
// Try presigned URL upload first
|
|
50
32
|
const presignedResult = await client.presignedImport(options.file, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc-import.js","sourceRoot":"","sources":["../../src/commands/doc-import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"doc-import.js","sourceRoot":"","sources":["../../src/commands/doc-import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAU7C,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAa,EACb,OASC;IAED,IAAI,CAAE,cAAoC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAClE,MAAM,GAAG,GAAG,0BAA0B,OAAO,CAAC,IAAI,aAAa,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3F,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IAED,gDAAgD;IAChD,IAAI,CAAC;QACH,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,qBAAqB,OAAO,CAAC,IAAI,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACtG,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEjD,iCAAiC;QACjC,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,eAAe,CAClD,OAAO,CAAC,IAAI,EACZ;YACE,KAAK;YACL,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,WAAW,EAAE,OAAO,CAAC,UAAU;YAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,YAAY,EAAE,OAAO,CAAC,WAAW;SAClC,EACD,OAAO,CAAC,IAAI;YACV,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;gBAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,gBAAgB,WAAW,CAAC,QAAQ,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,EAAE,CAChE,CAAC;YACJ,CAAC,CACN,CAAC;QAEF,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CACT,YAAY,CACV,EAAE,GAAG,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,EAClD,IAAI,CACL,CACF,CAAC;gBACF,OAAO;YACT,CAAC;YACD,YAAY,CACV,uBAAuB,KAAK,YAAY,eAAe,CAAC,IAAI,CAAC,IAAI,sBAAsB,EACvF,KAAK,CACN,CAAC;YACF,OAAO;QACT,CAAC;QAED,wDAAwD;QACxD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,cAAc,CAAC;YAC5C,KAAK;YACL,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO;YACP,WAAW,EAAE,OAAO,CAAC,UAAU;YAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,YAAY,EAAE,OAAO,CAAC,WAAW;SAClC,CAAC,CAAmB,CAAC;QAEtB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CACT,YAAY,CAAC,EAAE,GAAG,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,CAC7D,CAAC;YACF,OAAO;QACT,CAAC;QAED,YAAY,CACV,uBAAuB,KAAK,YAAY,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,EAC7D,KAAK,CACN,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,iCAAiC;YACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createAdapter } from '../adapters/factory.js';
|
|
2
|
-
import {
|
|
2
|
+
import { confirmWriteTarget } from '../write-target.js';
|
|
3
|
+
import { formatOutput, printError, printSuccess, printValidationError } from '../output.js';
|
|
3
4
|
import { OrbitMapAPIError } from '../errors.js';
|
|
4
5
|
const FRIENDLY_ERRORS = {
|
|
5
6
|
CONTENT_UNAVAILABLE: 'Storage unavailable — patch aborted to prevent data loss. Try again later.',
|
|
@@ -25,26 +26,14 @@ export async function docPatchCommand(idOrSlug, options) {
|
|
|
25
26
|
}
|
|
26
27
|
catch (err) {
|
|
27
28
|
const msg = `Invalid --operations JSON: ${err instanceof Error ? err.message : String(err)}`;
|
|
28
|
-
|
|
29
|
-
console.error(JSON.stringify({ error: { message: msg } }));
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
console.error(`Error: ${msg}`);
|
|
33
|
-
}
|
|
34
|
-
process.exitCode = 1;
|
|
29
|
+
printValidationError(msg, options.json);
|
|
35
30
|
return;
|
|
36
31
|
}
|
|
37
32
|
}
|
|
38
33
|
else if (options.replaceSection) {
|
|
39
34
|
if (!options.content) {
|
|
40
35
|
const msg = '--replace-section requires --content with the new section body';
|
|
41
|
-
|
|
42
|
-
console.error(JSON.stringify({ error: { message: msg } }));
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
console.error(`Error: ${msg}`);
|
|
46
|
-
}
|
|
47
|
-
process.exitCode = 1;
|
|
36
|
+
printValidationError(msg, options.json);
|
|
48
37
|
return;
|
|
49
38
|
}
|
|
50
39
|
operations = [{ op: 'replace_section', heading: options.replaceSection, content: options.content }];
|
|
@@ -52,13 +41,7 @@ export async function docPatchCommand(idOrSlug, options) {
|
|
|
52
41
|
else if (options.insertSection) {
|
|
53
42
|
if (!options.content) {
|
|
54
43
|
const msg = '--insert-section requires --content with the section to insert';
|
|
55
|
-
|
|
56
|
-
console.error(JSON.stringify({ error: { message: msg } }));
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
console.error(`Error: ${msg}`);
|
|
60
|
-
}
|
|
61
|
-
process.exitCode = 1;
|
|
44
|
+
printValidationError(msg, options.json);
|
|
62
45
|
return;
|
|
63
46
|
}
|
|
64
47
|
operations = [{ op: 'insert_section', after_heading: options.after, content: options.content }];
|
|
@@ -69,41 +52,24 @@ export async function docPatchCommand(idOrSlug, options) {
|
|
|
69
52
|
else if (options.append) {
|
|
70
53
|
if (!options.content) {
|
|
71
54
|
const msg = '--append requires --content with the text to append';
|
|
72
|
-
|
|
73
|
-
console.error(JSON.stringify({ error: { message: msg } }));
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
console.error(`Error: ${msg}`);
|
|
77
|
-
}
|
|
78
|
-
process.exitCode = 1;
|
|
55
|
+
printValidationError(msg, options.json);
|
|
79
56
|
return;
|
|
80
57
|
}
|
|
81
58
|
operations = [{ op: 'append', content: options.content }];
|
|
82
59
|
}
|
|
83
60
|
else {
|
|
84
61
|
const msg = 'Provide --operations JSON, or use --replace-section, --insert-section, --delete-section, or --append';
|
|
85
|
-
|
|
86
|
-
console.error(JSON.stringify({ error: { message: msg } }));
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
console.error(`Error: ${msg}`);
|
|
90
|
-
}
|
|
91
|
-
process.exitCode = 1;
|
|
62
|
+
printValidationError(msg, options.json);
|
|
92
63
|
return;
|
|
93
64
|
}
|
|
94
65
|
const baseVersion = parseInt(options.baseVersion, 10);
|
|
95
66
|
if (isNaN(baseVersion) || baseVersion < 1) {
|
|
96
67
|
const msg = '--base-version must be a positive integer';
|
|
97
|
-
|
|
98
|
-
console.error(JSON.stringify({ error: { message: msg } }));
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
console.error(`Error: ${msg}`);
|
|
102
|
-
}
|
|
103
|
-
process.exitCode = 1;
|
|
68
|
+
printValidationError(msg, options.json);
|
|
104
69
|
return;
|
|
105
70
|
}
|
|
106
71
|
try {
|
|
72
|
+
await confirmWriteTarget('patch document', options, 'existing');
|
|
107
73
|
const client = await createAdapter(options.area);
|
|
108
74
|
const response = (await client.patchDocument(idOrSlug, operations, baseVersion, options.changelog));
|
|
109
75
|
if (options.json) {
|
|
@@ -123,15 +89,13 @@ export async function docPatchCommand(idOrSlug, options) {
|
|
|
123
89
|
}
|
|
124
90
|
}
|
|
125
91
|
catch (error) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
console.error(`Error: ${FRIENDLY_ERRORS[error.code]}`);
|
|
134
|
-
}
|
|
92
|
+
// Look the friendly text up by the canonical code (ERROR_CODE_ALIASES in errors.ts) but
|
|
93
|
+
// keep reporting the wire code, so nothing the user sees changes across the API rename.
|
|
94
|
+
const friendly = error instanceof OrbitMapAPIError ? FRIENDLY_ERRORS[error.canonicalCode] : undefined;
|
|
95
|
+
if (error instanceof OrbitMapAPIError && friendly) {
|
|
96
|
+
// Re-wrap rather than hand-rolling the envelope: the `--json` consumer keeps the same
|
|
97
|
+
// `code`/`status` it always got, and now also gets `details` like every other error.
|
|
98
|
+
printError(new OrbitMapAPIError(friendly, error.code, error.status, error.details), options.json);
|
|
135
99
|
process.exitCode = 1;
|
|
136
100
|
return;
|
|
137
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc-patch.js","sourceRoot":"","sources":["../../src/commands/doc-patch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"doc-patch.js","sourceRoot":"","sources":["../../src/commands/doc-patch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { createAdapter } from '../adapters/factory.js';
|
|
2
|
+
import { confirmWriteTarget } from '../write-target.js';
|
|
2
3
|
import { formatOutput, printError, printSuccess } from '../output.js';
|
|
3
4
|
export async function docShareCommand(documentId, areaId, options) {
|
|
4
5
|
const agentIds = options.agents
|
|
5
6
|
? options.agents.split(',').map((s) => s.trim())
|
|
6
7
|
: undefined;
|
|
7
8
|
try {
|
|
9
|
+
await confirmWriteTarget('share document', options, 'existing');
|
|
8
10
|
const client = await createAdapter(options.area);
|
|
9
11
|
const response = (await client.shareDocument(documentId, areaId, agentIds));
|
|
10
12
|
if (options.json) {
|
|
@@ -23,6 +25,7 @@ export async function docShareCommand(documentId, areaId, options) {
|
|
|
23
25
|
}
|
|
24
26
|
export async function docUnshareCommand(documentId, areaId, options) {
|
|
25
27
|
try {
|
|
28
|
+
await confirmWriteTarget('unshare document', options, 'existing');
|
|
26
29
|
const client = await createAdapter(options.area);
|
|
27
30
|
const response = (await client.unshareDocument(documentId, areaId));
|
|
28
31
|
if (options.json) {
|
|
@@ -41,6 +44,7 @@ export async function docVisibilityCommand(documentId, areaId, options) {
|
|
|
41
44
|
? options.agents.split(',').map((s) => s.trim())
|
|
42
45
|
: [];
|
|
43
46
|
try {
|
|
47
|
+
await confirmWriteTarget('set document visibility', options, 'existing');
|
|
44
48
|
const client = await createAdapter(options.area);
|
|
45
49
|
const response = (await client.setDocumentVisibility(documentId, areaId, agentIds));
|
|
46
50
|
if (options.json) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc-share.js","sourceRoot":"","sources":["../../src/commands/doc-share.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doc-share.js","sourceRoot":"","sources":["../../src/commands/doc-share.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { readFileSync, statSync } from 'node:fs';
|
|
2
2
|
import { createAdapter } from '../adapters/factory.js';
|
|
3
|
-
import {
|
|
3
|
+
import { confirmWriteTarget } from '../write-target.js';
|
|
4
|
+
import { formatOutput, printError, printSuccess, printValidationError } from '../output.js';
|
|
4
5
|
function formatBytes(bytes) {
|
|
5
6
|
if (bytes < 1024)
|
|
6
7
|
return `${bytes} B`;
|
|
@@ -15,16 +16,11 @@ export async function docUpdateCommand(idOrSlug, options) {
|
|
|
15
16
|
}
|
|
16
17
|
catch (err) {
|
|
17
18
|
const msg = `Cannot read file "${options.file}": ${err instanceof Error ? err.message : String(err)}`;
|
|
18
|
-
|
|
19
|
-
console.error(JSON.stringify({ error: { message: msg } }));
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
console.error(`Error: ${msg}`);
|
|
23
|
-
}
|
|
24
|
-
process.exitCode = 1;
|
|
19
|
+
printValidationError(msg, options.json);
|
|
25
20
|
return;
|
|
26
21
|
}
|
|
27
22
|
try {
|
|
23
|
+
await confirmWriteTarget('update document', options, 'existing');
|
|
28
24
|
const client = await createAdapter(options.area);
|
|
29
25
|
// Try presigned URL upload first
|
|
30
26
|
const presignedResult = await client.presignedUpdate(idOrSlug, options.file, options.changelog, options.json
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc-update.js","sourceRoot":"","sources":["../../src/commands/doc-update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"doc-update.js","sourceRoot":"","sources":["../../src/commands/doc-update.ts"],"names":[],"mappings":"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"}
|