agent-issues 0.0.121 → 0.0.127
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/dist/build-info.json +3 -0
- package/dist/cli.js +97746 -26
- package/kanban/dist/assets/index-CIAg6qj5.css +1 -0
- package/kanban/dist/assets/index-DaYQjJS7.js +920 -0
- package/kanban/dist/index.html +13 -0
- package/package.json +12 -11
- package/site/dist/assets/{index-Cx-fLU3e.js → index-BRvRYF7I.js} +195 -146
- package/site/dist/index.html +1 -1
- package/dist/agent-installer.d.ts +0 -49
- package/dist/agent-installer.js +0 -171
- package/dist/agent-installer.js.map +0 -1
- package/dist/auth-session.d.ts +0 -40
- package/dist/auth-session.js +0 -107
- package/dist/auth-session.js.map +0 -1
- package/dist/body-backfill.d.ts +0 -26
- package/dist/body-backfill.js +0 -219
- package/dist/body-backfill.js.map +0 -1
- package/dist/build-mode.d.ts +0 -1
- package/dist/build-mode.js +0 -1
- package/dist/build-mode.js.map +0 -1
- package/dist/cli/commands/auth.d.ts +0 -61
- package/dist/cli/commands/auth.js +0 -134
- package/dist/cli/commands/auth.js.map +0 -1
- package/dist/cli/commands/backfill.d.ts +0 -8
- package/dist/cli/commands/backfill.js +0 -36
- package/dist/cli/commands/backfill.js.map +0 -1
- package/dist/cli/commands/comments.d.ts +0 -34
- package/dist/cli/commands/comments.js +0 -124
- package/dist/cli/commands/comments.js.map +0 -1
- package/dist/cli/commands/context.d.ts +0 -13
- package/dist/cli/commands/context.js +0 -156
- package/dist/cli/commands/context.js.map +0 -1
- package/dist/cli/commands/entities.d.ts +0 -91
- package/dist/cli/commands/entities.js +0 -420
- package/dist/cli/commands/entities.js.map +0 -1
- package/dist/cli/commands/export.d.ts +0 -20
- package/dist/cli/commands/export.js +0 -98
- package/dist/cli/commands/export.js.map +0 -1
- package/dist/cli/commands/fallback.d.ts +0 -6
- package/dist/cli/commands/fallback.js +0 -10
- package/dist/cli/commands/fallback.js.map +0 -1
- package/dist/cli/commands/handoff.d.ts +0 -1
- package/dist/cli/commands/handoff.js +0 -2
- package/dist/cli/commands/handoff.js.map +0 -1
- package/dist/cli/commands/installers.d.ts +0 -37
- package/dist/cli/commands/installers.js +0 -78
- package/dist/cli/commands/installers.js.map +0 -1
- package/dist/cli/commands/kanban.d.ts +0 -8
- package/dist/cli/commands/kanban.js +0 -83
- package/dist/cli/commands/kanban.js.map +0 -1
- package/dist/cli/commands/meta.d.ts +0 -14
- package/dist/cli/commands/meta.js +0 -33
- package/dist/cli/commands/meta.js.map +0 -1
- package/dist/cli/commands/plan-entries.d.ts +0 -30
- package/dist/cli/commands/plan-entries.js +0 -94
- package/dist/cli/commands/plan-entries.js.map +0 -1
- package/dist/cli/commands/site.d.ts +0 -29
- package/dist/cli/commands/site.js +0 -89
- package/dist/cli/commands/site.js.map +0 -1
- package/dist/cli/commands/sql.d.ts +0 -6
- package/dist/cli/commands/sql.js +0 -21
- package/dist/cli/commands/sql.js.map +0 -1
- package/dist/cli/commands/synchronize.d.ts +0 -12
- package/dist/cli/commands/synchronize.js +0 -31
- package/dist/cli/commands/synchronize.js.map +0 -1
- package/dist/cli/commands/tenants.d.ts +0 -29
- package/dist/cli/commands/tenants.js +0 -101
- package/dist/cli/commands/tenants.js.map +0 -1
- package/dist/cli/index.d.ts +0 -4
- package/dist/cli/index.js +0 -120
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/renderers.d.ts +0 -250
- package/dist/cli/renderers.js +0 -286
- package/dist/cli/renderers.js.map +0 -1
- package/dist/cli/shared.d.ts +0 -97
- package/dist/cli/shared.js +0 -192
- package/dist/cli/shared.js.map +0 -1
- package/dist/cli.d.ts +0 -11
- package/dist/cli.js.map +0 -1
- package/dist/context-cli.d.ts +0 -16
- package/dist/context-cli.js +0 -131
- package/dist/context-cli.js.map +0 -1
- package/dist/daemon/daemon-lifecycle.d.ts +0 -1
- package/dist/daemon/daemon-lifecycle.js +0 -2
- package/dist/daemon/daemon-lifecycle.js.map +0 -1
- package/dist/daemon/daemon-main.d.ts +0 -14
- package/dist/daemon/daemon-main.js +0 -30
- package/dist/daemon/daemon-main.js.map +0 -1
- package/dist/daemon/local-daemon-store.d.ts +0 -21
- package/dist/daemon/local-daemon-store.js +0 -31
- package/dist/daemon/local-daemon-store.js.map +0 -1
- package/dist/entity-projection.d.ts +0 -141
- package/dist/entity-projection.js +0 -147
- package/dist/entity-projection.js.map +0 -1
- package/dist/entra-device-login.d.ts +0 -12
- package/dist/entra-device-login.js +0 -40
- package/dist/entra-device-login.js.map +0 -1
- package/dist/export-files.d.ts +0 -24
- package/dist/export-files.js +0 -230
- package/dist/export-files.js.map +0 -1
- package/dist/export-markdown.d.ts +0 -24
- package/dist/export-markdown.js +0 -343
- package/dist/export-markdown.js.map +0 -1
- package/dist/help.d.ts +0 -112
- package/dist/help.js +0 -1430
- package/dist/help.js.map +0 -1
- package/dist/kanban/assets.d.ts +0 -3
- package/dist/kanban/assets.js +0 -37
- package/dist/kanban/assets.js.map +0 -1
- package/dist/kanban/index.d.ts +0 -1
- package/dist/kanban/index.js +0 -2
- package/dist/kanban/index.js.map +0 -1
- package/dist/kanban/server.d.ts +0 -28
- package/dist/kanban/server.js +0 -118
- package/dist/kanban/server.js.map +0 -1
- package/dist/mcp-installer.d.ts +0 -32
- package/dist/mcp-installer.js +0 -118
- package/dist/mcp-installer.js.map +0 -1
- package/dist/mcp-server/index.d.ts +0 -11
- package/dist/mcp-server/index.js +0 -504
- package/dist/mcp-server/index.js.map +0 -1
- package/dist/mcp-server/index.test.d.ts +0 -1
- package/dist/mcp-server/index.test.js +0 -746
- package/dist/mcp-server/index.test.js.map +0 -1
- package/dist/mcp-server/mcp-tool-audit.d.ts +0 -6
- package/dist/mcp-server/mcp-tool-audit.js +0 -47
- package/dist/mcp-server/mcp-tool-audit.js.map +0 -1
- package/dist/mcp-server/stdio.d.ts +0 -2
- package/dist/mcp-server/stdio.js +0 -7
- package/dist/mcp-server/stdio.js.map +0 -1
- package/dist/mcp.d.ts +0 -2
- package/dist/mcp.js +0 -19
- package/dist/mcp.js.map +0 -1
- package/dist/open-storage-driver.d.ts +0 -55
- package/dist/open-storage-driver.js +0 -73
- package/dist/open-storage-driver.js.map +0 -1
- package/dist/open-synchronize-stores.d.ts +0 -24
- package/dist/open-synchronize-stores.js +0 -34
- package/dist/open-synchronize-stores.js.map +0 -1
- package/dist/project-identity.d.ts +0 -23
- package/dist/project-identity.js +0 -121
- package/dist/project-identity.js.map +0 -1
- package/dist/runtime-access-boundary.d.ts +0 -7
- package/dist/runtime-access-boundary.js +0 -182
- package/dist/runtime-access-boundary.js.map +0 -1
- package/dist/service-discovery.d.ts +0 -10
- package/dist/service-discovery.js +0 -64
- package/dist/service-discovery.js.map +0 -1
- package/dist/site/assets.d.ts +0 -4
- package/dist/site/assets.js +0 -46
- package/dist/site/assets.js.map +0 -1
- package/dist/site/cloud-events-relay.d.ts +0 -16
- package/dist/site/cloud-events-relay.js +0 -78
- package/dist/site/cloud-events-relay.js.map +0 -1
- package/dist/site/index.d.ts +0 -1
- package/dist/site/index.js +0 -2
- package/dist/site/index.js.map +0 -1
- package/dist/site/server.d.ts +0 -42
- package/dist/site/server.js +0 -632
- package/dist/site/server.js.map +0 -1
- package/dist/skill-installer.d.ts +0 -35
- package/dist/skill-installer.js +0 -180
- package/dist/skill-installer.js.map +0 -1
- package/dist/vitest-setup.d.ts +0 -1
- package/dist/vitest-setup.js +0 -7
- package/dist/vitest-setup.js.map +0 -1
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { BodyTenantCommand, TenantCommand } from "../shared.js";
|
|
2
|
-
declare abstract class PositionalsTenantCommand extends TenantCommand {
|
|
3
|
-
positionals: string[];
|
|
4
|
-
}
|
|
5
|
-
export declare class CreateCommand extends BodyTenantCommand {
|
|
6
|
-
static paths: string[][];
|
|
7
|
-
category: string | undefined;
|
|
8
|
-
links: [string, string][] | undefined;
|
|
9
|
-
parent: string | undefined;
|
|
10
|
-
positionals: string[];
|
|
11
|
-
priority: string | undefined;
|
|
12
|
-
statusValue: string | undefined;
|
|
13
|
-
title: string | undefined;
|
|
14
|
-
entityType: string | undefined;
|
|
15
|
-
execute(): Promise<number>;
|
|
16
|
-
}
|
|
17
|
-
export declare class EditCommand extends BodyTenantCommand {
|
|
18
|
-
static paths: string[][];
|
|
19
|
-
category: string | undefined;
|
|
20
|
-
positionals: string[];
|
|
21
|
-
priority: string | undefined;
|
|
22
|
-
title: string | undefined;
|
|
23
|
-
entityType: string | undefined;
|
|
24
|
-
execute(): Promise<number>;
|
|
25
|
-
}
|
|
26
|
-
export declare class HistoryCommand extends TenantCommand {
|
|
27
|
-
static paths: string[][];
|
|
28
|
-
contextScope: string | undefined;
|
|
29
|
-
positionals: string[];
|
|
30
|
-
revisionValue: string;
|
|
31
|
-
term: string | undefined;
|
|
32
|
-
execute(): Promise<number>;
|
|
33
|
-
}
|
|
34
|
-
export declare class RestoreCommand extends PositionalsTenantCommand {
|
|
35
|
-
static paths: string[][];
|
|
36
|
-
contextScope: string | undefined;
|
|
37
|
-
revisionValue: string;
|
|
38
|
-
term: string | undefined;
|
|
39
|
-
view: string | undefined;
|
|
40
|
-
execute(): Promise<number>;
|
|
41
|
-
}
|
|
42
|
-
export declare class ArchiveCommand extends PositionalsTenantCommand {
|
|
43
|
-
static paths: string[][];
|
|
44
|
-
execute(): Promise<number>;
|
|
45
|
-
}
|
|
46
|
-
export declare class DeleteCommand extends PositionalsTenantCommand {
|
|
47
|
-
static paths: string[][];
|
|
48
|
-
execute(): Promise<number>;
|
|
49
|
-
}
|
|
50
|
-
export declare class MoveCommand extends PositionalsTenantCommand {
|
|
51
|
-
static paths: string[][];
|
|
52
|
-
execute(): Promise<number>;
|
|
53
|
-
}
|
|
54
|
-
export declare class LinkCommand extends PositionalsTenantCommand {
|
|
55
|
-
static paths: string[][];
|
|
56
|
-
execute(): Promise<number>;
|
|
57
|
-
}
|
|
58
|
-
export declare class UnlinkCommand extends PositionalsTenantCommand {
|
|
59
|
-
static paths: string[][];
|
|
60
|
-
execute(): Promise<number>;
|
|
61
|
-
}
|
|
62
|
-
export declare class StatusCommand extends PositionalsTenantCommand {
|
|
63
|
-
static paths: string[][];
|
|
64
|
-
execute(): Promise<number>;
|
|
65
|
-
}
|
|
66
|
-
export declare class NextWorkCommand extends PositionalsTenantCommand {
|
|
67
|
-
static paths: string[][];
|
|
68
|
-
execute(): Promise<number>;
|
|
69
|
-
}
|
|
70
|
-
export declare class RelationsCommand extends PositionalsTenantCommand {
|
|
71
|
-
static paths: string[][];
|
|
72
|
-
directionValue: string | undefined;
|
|
73
|
-
typeValues: string | undefined;
|
|
74
|
-
execute(): Promise<number>;
|
|
75
|
-
}
|
|
76
|
-
export declare class OrphansCommand extends PositionalsTenantCommand {
|
|
77
|
-
static paths: string[][];
|
|
78
|
-
execute(): Promise<number>;
|
|
79
|
-
}
|
|
80
|
-
export declare class ShowCommand extends PositionalsTenantCommand {
|
|
81
|
-
static paths: string[][];
|
|
82
|
-
execute(): Promise<number>;
|
|
83
|
-
}
|
|
84
|
-
export declare class ListCommand extends PositionalsTenantCommand {
|
|
85
|
-
static paths: string[][];
|
|
86
|
-
limit: string | undefined;
|
|
87
|
-
parent: string | undefined;
|
|
88
|
-
statusValues: string | undefined;
|
|
89
|
-
execute(): Promise<number>;
|
|
90
|
-
}
|
|
91
|
-
export {};
|
|
@@ -1,420 +0,0 @@
|
|
|
1
|
-
import { Option } from "clipanion";
|
|
2
|
-
import { ALLOWED_RELATIONS, computeContextContentHash, computeContextTermContentHash, computeEntityContentHash, isEntityKind, isValidStatus, projectPlanEntries } from "@agent-issues/core";
|
|
3
|
-
import { toCompactCreateAcknowledgement, toCompactContextRestoreAcknowledgement, toCompactContextTermRestoreAcknowledgement, toCompactDeleteAcknowledgement, toCompactEditAcknowledgement, toCompactEntityDetails, toCompactEntityList, toCompactEntityRestoreAcknowledgement, toCompactLinkAcknowledgement, toCompactMoveAcknowledgement, toCompactNextWork, toCompactStatusAcknowledgement } from "../../entity-projection.js";
|
|
4
|
-
import { renderEntityDetails, renderEntityList, renderInitiativeBundle, renderOptionalEntityList, renderPlanDetails } from "../renderers.js";
|
|
5
|
-
import { BodyTenantCommand, TenantCommand, parseCsvOption, parseEntityView, parsePositiveIntegerOption, requireOption, requirePositional, withStore } from "../shared.js";
|
|
6
|
-
class PositionalsTenantCommand extends TenantCommand {
|
|
7
|
-
positionals = Option.Rest();
|
|
8
|
-
}
|
|
9
|
-
function parseRevision(value) {
|
|
10
|
-
const revision = Number(value);
|
|
11
|
-
if (!Number.isInteger(revision) || revision < 1) {
|
|
12
|
-
throw new Error(`Revision must be a positive integer: ${value}`);
|
|
13
|
-
}
|
|
14
|
-
return revision;
|
|
15
|
-
}
|
|
16
|
-
export class CreateCommand extends BodyTenantCommand {
|
|
17
|
-
static paths = [["create"]];
|
|
18
|
-
category = Option.String("--category");
|
|
19
|
-
links = Option.Array("--link", { arity: 2 });
|
|
20
|
-
parent = Option.String("--parent");
|
|
21
|
-
positionals = Option.Rest();
|
|
22
|
-
priority = Option.String("--priority");
|
|
23
|
-
statusValue = Option.String("--status");
|
|
24
|
-
title = Option.String("--title");
|
|
25
|
-
entityType = Option.String("--type");
|
|
26
|
-
async execute() {
|
|
27
|
-
const kind = requirePositional(this.positionals, 0, "create <kind>");
|
|
28
|
-
if (!isEntityKind(kind)) {
|
|
29
|
-
throw new Error(`Unknown entity kind: ${kind}`);
|
|
30
|
-
}
|
|
31
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store) => {
|
|
32
|
-
const entity = await store.createEntity({
|
|
33
|
-
body: await this.resolveBody(),
|
|
34
|
-
category: this.category,
|
|
35
|
-
kind,
|
|
36
|
-
links: this.links?.map(([relationType, targetId]) => ({ relationType, targetId })),
|
|
37
|
-
parentId: this.parent,
|
|
38
|
-
priority: this.priority,
|
|
39
|
-
status: this.statusValue,
|
|
40
|
-
title: requireOption(this.title, "--title is required for create."),
|
|
41
|
-
type: this.entityType
|
|
42
|
-
});
|
|
43
|
-
this.print(this.asJson ? toCompactCreateAcknowledgement(entity) : entity, `${entity.reference} ${entity.kind} ${entity.status} ${entity.title}`);
|
|
44
|
-
return 0;
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
export class EditCommand extends BodyTenantCommand {
|
|
49
|
-
static paths = [["edit"]];
|
|
50
|
-
category = Option.String("--category");
|
|
51
|
-
positionals = Option.Rest();
|
|
52
|
-
priority = Option.String("--priority");
|
|
53
|
-
title = Option.String("--title");
|
|
54
|
-
entityType = Option.String("--type");
|
|
55
|
-
async execute() {
|
|
56
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store) => {
|
|
57
|
-
const entityId = requirePositional(this.positionals, 0, "edit <id> (--title <text> | --body-file <path|->)");
|
|
58
|
-
const body = await this.resolveBody();
|
|
59
|
-
if (this.title === undefined && body === undefined && this.category === undefined && this.priority === undefined && this.entityType === undefined) {
|
|
60
|
-
throw new Error("--title, --body-file, --category, --priority, or --type is required for edit.");
|
|
61
|
-
}
|
|
62
|
-
const { entity: current } = await store.getEntityDetails(entityId);
|
|
63
|
-
const entity = await store.updateEntity({ body, category: this.category, entityId, priority: this.priority, title: this.title, type: this.entityType, expectedRevision: current.revision, expectedContentHash: current.contentHash });
|
|
64
|
-
this.print(this.asJson ? toCompactEditAcknowledgement(entity) : entity, `Updated ${entity.id} ${entity.kind} ${entity.title}`);
|
|
65
|
-
return 0;
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
export class HistoryCommand extends TenantCommand {
|
|
70
|
-
static paths = [["history"]];
|
|
71
|
-
contextScope = Option.String("--context");
|
|
72
|
-
positionals = Option.Rest();
|
|
73
|
-
revisionValue = Option.String("--revision", { required: true });
|
|
74
|
-
term = Option.String("--term");
|
|
75
|
-
async execute() {
|
|
76
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store) => {
|
|
77
|
-
const revision = parseRevision(this.revisionValue);
|
|
78
|
-
if (this.contextScope) {
|
|
79
|
-
if (this.positionals.length > 0) {
|
|
80
|
-
throw new Error("History accepts either an entity id or --context, not both.");
|
|
81
|
-
}
|
|
82
|
-
if (this.term) {
|
|
83
|
-
const materialized = await store.materializeContextTermRevision({ scopeRef: this.contextScope, term: this.term, revision });
|
|
84
|
-
this.print(materialized, `${materialized.contextKey} term ${materialized.term} revision ${materialized.targetRevision}/${materialized.headRevision}${materialized.tombstone ? " tombstoned" : ""}\n${materialized.definition}\nAvoid: ${materialized.avoid.join(", ") || "none"}`);
|
|
85
|
-
return 0;
|
|
86
|
-
}
|
|
87
|
-
const materialized = await store.materializeContextRevision({ scopeRef: this.contextScope, revision });
|
|
88
|
-
this.print(materialized, `${materialized.contextKey} context revision ${materialized.targetRevision}/${materialized.headRevision} ${materialized.title}\n${materialized.summary}`);
|
|
89
|
-
return 0;
|
|
90
|
-
}
|
|
91
|
-
if (this.term) {
|
|
92
|
-
throw new Error("--term requires --context <scope>.");
|
|
93
|
-
}
|
|
94
|
-
const entityId = requirePositional(this.positionals, 0, "history <id> --revision <revision>");
|
|
95
|
-
const materialized = await store.materializeEntityRevision({ entityId, revision });
|
|
96
|
-
this.print(materialized, `${materialized.entityId} revision ${materialized.targetRevision}/${materialized.headRevision} ${materialized.status} ${materialized.title}\n${materialized.body}`);
|
|
97
|
-
return 0;
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
export class RestoreCommand extends PositionalsTenantCommand {
|
|
102
|
-
static paths = [["restore"]];
|
|
103
|
-
contextScope = Option.String("--context");
|
|
104
|
-
revisionValue = Option.String("--revision", { required: true });
|
|
105
|
-
term = Option.String("--term");
|
|
106
|
-
view = Option.String("--view");
|
|
107
|
-
async execute() {
|
|
108
|
-
if (!this.contextScope && this.view !== undefined) {
|
|
109
|
-
throw new Error("--view is only valid for context restore.");
|
|
110
|
-
}
|
|
111
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store) => {
|
|
112
|
-
const revision = parseRevision(this.revisionValue);
|
|
113
|
-
if (this.contextScope) {
|
|
114
|
-
const view = parseEntityView(this.view);
|
|
115
|
-
if (this.positionals.length > 0) {
|
|
116
|
-
throw new Error("Restore accepts either an entity id or --context, not both.");
|
|
117
|
-
}
|
|
118
|
-
if (this.term) {
|
|
119
|
-
const source = await store.materializeContextTermRevision({ scopeRef: this.contextScope, term: this.term, revision });
|
|
120
|
-
const head = await store.materializeContextTermRevision({ scopeRef: this.contextScope, term: this.term, revision: source.headRevision });
|
|
121
|
-
const restored = await store.restoreContextTermRevision({
|
|
122
|
-
scopeRef: this.contextScope,
|
|
123
|
-
term: this.term,
|
|
124
|
-
revision,
|
|
125
|
-
expectedRevision: head.headRevision,
|
|
126
|
-
expectedContentHash: computeContextTermContentHash(head.term, head.definition, head.avoid, head.tombstone)
|
|
127
|
-
});
|
|
128
|
-
this.print(this.asJson && view === "compact" ? toCompactContextTermRestoreAcknowledgement(restored) : restored, `Restored ${restored.contextKey} term ${restored.term} revision ${revision} as revision ${restored.headRevision}`);
|
|
129
|
-
return 0;
|
|
130
|
-
}
|
|
131
|
-
const source = await store.materializeContextRevision({ scopeRef: this.contextScope, revision });
|
|
132
|
-
const head = await store.materializeContextRevision({ scopeRef: this.contextScope, revision: source.headRevision });
|
|
133
|
-
const restored = await store.restoreContextRevision({
|
|
134
|
-
scopeRef: this.contextScope,
|
|
135
|
-
revision,
|
|
136
|
-
expectedRevision: head.headRevision,
|
|
137
|
-
expectedContentHash: computeContextContentHash(head.title, head.summary)
|
|
138
|
-
});
|
|
139
|
-
this.print(this.asJson && view === "compact" ? toCompactContextRestoreAcknowledgement(restored) : restored, `Restored ${restored.contextKey} context revision ${revision} as revision ${restored.headRevision}`);
|
|
140
|
-
return 0;
|
|
141
|
-
}
|
|
142
|
-
if (this.term) {
|
|
143
|
-
throw new Error("--term requires --context <scope>.");
|
|
144
|
-
}
|
|
145
|
-
const entityId = requirePositional(this.positionals, 0, "restore <id> --revision <revision>");
|
|
146
|
-
const source = await store.materializeEntityRevision({ entityId, revision });
|
|
147
|
-
const head = await store.materializeEntityRevision({ entityId, revision: source.headRevision });
|
|
148
|
-
const restored = await store.restoreEntityRevision({
|
|
149
|
-
entityId,
|
|
150
|
-
revision,
|
|
151
|
-
expectedRevision: head.headRevision,
|
|
152
|
-
expectedContentHash: computeEntityContentHash(head.title, head.body)
|
|
153
|
-
});
|
|
154
|
-
this.print(this.asJson ? toCompactEntityRestoreAcknowledgement(restored) : restored, `Restored ${entityId} revision ${revision} as revision ${restored.headRevision}`);
|
|
155
|
-
return 0;
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
export class ArchiveCommand extends PositionalsTenantCommand {
|
|
160
|
-
static paths = [["archive"]];
|
|
161
|
-
async execute() {
|
|
162
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store) => {
|
|
163
|
-
const entityId = requirePositional(this.positionals, 0, "archive <id>");
|
|
164
|
-
const result = await store.archiveEntity({ entityId });
|
|
165
|
-
this.print(this.asJson ? toCompactStatusAcknowledgement("archive", result) : result, `Archived ${result.entity.id} from ${result.previousStatus} to ${result.entity.status}`);
|
|
166
|
-
return 0;
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
export class DeleteCommand extends PositionalsTenantCommand {
|
|
171
|
-
static paths = [["delete"]];
|
|
172
|
-
async execute() {
|
|
173
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store) => {
|
|
174
|
-
const entityId = requirePositional(this.positionals, 0, "delete <id>");
|
|
175
|
-
const result = await store.deleteEntity({ entityId });
|
|
176
|
-
this.print(this.asJson ? toCompactDeleteAcknowledgement(result) : result, `Deleted ${result.entity.id} ${result.entity.kind} ${result.entity.title}`);
|
|
177
|
-
return 0;
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
export class MoveCommand extends PositionalsTenantCommand {
|
|
182
|
-
static paths = [["move"]];
|
|
183
|
-
async execute() {
|
|
184
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store) => {
|
|
185
|
-
const entityId = requirePositional(this.positionals, 0, "move <id> <newParentId>");
|
|
186
|
-
const newParentId = requirePositional(this.positionals, 1, "move <id> <newParentId>");
|
|
187
|
-
const result = await store.moveEntity({ entityId, newParentId });
|
|
188
|
-
this.print(this.asJson ? toCompactMoveAcknowledgement(result) : result, `Moved ${result.entity.id} from ${result.previousParentId ?? "none"} to ${result.newParentId} as ${result.relationType}`);
|
|
189
|
-
return 0;
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
export class LinkCommand extends PositionalsTenantCommand {
|
|
194
|
-
static paths = [["link"]];
|
|
195
|
-
async execute() {
|
|
196
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store) => {
|
|
197
|
-
const fromId = requirePositional(this.positionals, 0, "link <fromId> <relationType> <toId>");
|
|
198
|
-
const relationType = requirePositional(this.positionals, 1, "link <fromId> <relationType> <toId>");
|
|
199
|
-
const toId = requirePositional(this.positionals, 2, "link <fromId> <relationType> <toId>");
|
|
200
|
-
const planEntry = await findPlanEntry(store, fromId);
|
|
201
|
-
if (planEntry) {
|
|
202
|
-
if (relationType !== "informs") {
|
|
203
|
-
throw new Error("Plan entries can link to issues only as informs. Valid relation types: informs.");
|
|
204
|
-
}
|
|
205
|
-
const result = await store.linkPlanEntryIssue({ entryId: planEntry.id, issueId: toId });
|
|
206
|
-
this.print(this.asJson ? toCompactLinkAcknowledgement("link", result) : result, result.created
|
|
207
|
-
? `Linked ${fromId} -> ${toId} as ${relationType}`
|
|
208
|
-
: `Relation already existed: ${fromId} -> ${toId} as ${relationType}`);
|
|
209
|
-
return 0;
|
|
210
|
-
}
|
|
211
|
-
const result = await store.linkEntities({ fromId, relationType, toId });
|
|
212
|
-
this.print(this.asJson ? toCompactLinkAcknowledgement("link", result) : result, result.created
|
|
213
|
-
? `Linked ${fromId} -> ${toId} as ${relationType}`
|
|
214
|
-
: `Relation already existed: ${fromId} -> ${toId} as ${relationType}`);
|
|
215
|
-
return 0;
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
export class UnlinkCommand extends PositionalsTenantCommand {
|
|
220
|
-
static paths = [["unlink"]];
|
|
221
|
-
async execute() {
|
|
222
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store) => {
|
|
223
|
-
const fromId = requirePositional(this.positionals, 0, "unlink <fromId> <relationType> <toId>");
|
|
224
|
-
const relationType = requirePositional(this.positionals, 1, "unlink <fromId> <relationType> <toId>");
|
|
225
|
-
const toId = requirePositional(this.positionals, 2, "unlink <fromId> <relationType> <toId>");
|
|
226
|
-
const planEntry = await findPlanEntry(store, fromId);
|
|
227
|
-
if (planEntry) {
|
|
228
|
-
if (relationType !== "informs") {
|
|
229
|
-
throw new Error("Plan entries can link to issues only as informs. Valid relation types: informs.");
|
|
230
|
-
}
|
|
231
|
-
const result = await store.unlinkPlanEntryIssue({ entryId: planEntry.id, issueId: toId });
|
|
232
|
-
this.print(this.asJson ? toCompactLinkAcknowledgement("unlink", result) : result, result.removed
|
|
233
|
-
? `Unlinked ${fromId} -> ${toId} as ${relationType}`
|
|
234
|
-
: `Relation did not exist: ${fromId} -> ${toId} as ${relationType}`);
|
|
235
|
-
return 0;
|
|
236
|
-
}
|
|
237
|
-
const result = await store.unlinkEntities({ fromId, relationType, toId });
|
|
238
|
-
this.print(this.asJson ? toCompactLinkAcknowledgement("unlink", result) : result, result.removed
|
|
239
|
-
? `Unlinked ${fromId} -> ${toId} as ${relationType}`
|
|
240
|
-
: `Relation did not exist: ${fromId} -> ${toId} as ${relationType}`);
|
|
241
|
-
return 0;
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
async function findPlanEntry(store, entryId) {
|
|
246
|
-
try {
|
|
247
|
-
return await store.getPlanEntry({ entryId });
|
|
248
|
-
}
|
|
249
|
-
catch (error) {
|
|
250
|
-
if (error instanceof Error && error.message === `Plan entry not found: ${entryId}`) {
|
|
251
|
-
return null;
|
|
252
|
-
}
|
|
253
|
-
throw error;
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
export class StatusCommand extends PositionalsTenantCommand {
|
|
257
|
-
static paths = [["status"]];
|
|
258
|
-
async execute() {
|
|
259
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store) => {
|
|
260
|
-
const entityId = requirePositional(this.positionals, 0, "status <id> <status>");
|
|
261
|
-
const status = requirePositional(this.positionals, 1, "status <id> <status>");
|
|
262
|
-
const result = await store.updateEntityStatus({ entityId, status });
|
|
263
|
-
this.print(this.asJson ? toCompactStatusAcknowledgement("status", result) : result, `Updated ${result.entity.id} from ${result.previousStatus} to ${result.entity.status}`);
|
|
264
|
-
return 0;
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
const STRUCTURAL_PARENT_RELATION_TYPES = ["contains", "owns", "records", "tracks", "creates", "decomposes"];
|
|
269
|
-
export class NextWorkCommand extends PositionalsTenantCommand {
|
|
270
|
-
static paths = [["next-work"]];
|
|
271
|
-
async execute() {
|
|
272
|
-
const scopeId = requirePositional(this.positionals, 0, "next-work <initiativeOrDescendantId>");
|
|
273
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store) => {
|
|
274
|
-
const initiative = await resolveContainingInitiative(store, scopeId);
|
|
275
|
-
const bundle = await store.getInitiativeBundle(initiative.id);
|
|
276
|
-
const allIssues = await store.queryEntities({ kind: "issue" });
|
|
277
|
-
const result = deriveNextWork(bundle, allIssues.openBlockers ?? {});
|
|
278
|
-
this.print(this.asJson ? toCompactNextWork(result) : result, renderNextWork(result));
|
|
279
|
-
return 0;
|
|
280
|
-
});
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
async function resolveContainingInitiative(store, scopeId) {
|
|
284
|
-
let details = await store.queryEntityRelations({ entityId: scopeId, direction: "incoming", types: STRUCTURAL_PARENT_RELATION_TYPES });
|
|
285
|
-
const visited = new Set();
|
|
286
|
-
while (details.entity.kind !== "initiative") {
|
|
287
|
-
if (visited.has(details.entity.id)) {
|
|
288
|
-
throw new Error(`Structural parent cycle found while resolving initiative: ${scopeId}`);
|
|
289
|
-
}
|
|
290
|
-
visited.add(details.entity.id);
|
|
291
|
-
const parent = details.incoming[0]?.entity;
|
|
292
|
-
if (!parent) {
|
|
293
|
-
throw new Error(`No initiative contains: ${scopeId}`);
|
|
294
|
-
}
|
|
295
|
-
details = await store.queryEntityRelations({ entityId: parent.id, direction: "incoming", types: STRUCTURAL_PARENT_RELATION_TYPES });
|
|
296
|
-
}
|
|
297
|
-
return details.entity;
|
|
298
|
-
}
|
|
299
|
-
function deriveNextWork(bundle, openBlockers) {
|
|
300
|
-
const unfinishedIssues = bundle.issues.filter((issue) => issue.status !== "done");
|
|
301
|
-
const blockersByReference = new Map(unfinishedIssues.map((issue) => [issue.reference, new Set(openBlockers[issue.reference] ?? [])]));
|
|
302
|
-
for (const { parent, issue } of bundle.subIssueLinks) {
|
|
303
|
-
if (parent.status !== "done" && issue.status !== "done") {
|
|
304
|
-
blockersByReference.get(parent.reference)?.add(issue.reference);
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
const unblocksByReference = new Map(unfinishedIssues.map((issue) => [issue.reference, new Set()]));
|
|
308
|
-
for (const issue of unfinishedIssues) {
|
|
309
|
-
for (const blocker of blockersByReference.get(issue.reference) ?? []) {
|
|
310
|
-
unblocksByReference.get(blocker)?.add(issue.reference);
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
const toItem = (issue) => ({
|
|
314
|
-
issue,
|
|
315
|
-
blockers: Array.from(blockersByReference.get(issue.reference) ?? []).sort(),
|
|
316
|
-
unblocks: Array.from(unblocksByReference.get(issue.reference) ?? []).sort()
|
|
317
|
-
});
|
|
318
|
-
const items = unfinishedIssues.map(toItem);
|
|
319
|
-
return {
|
|
320
|
-
initiative: bundle.initiative,
|
|
321
|
-
available: items.filter((item) => item.blockers.length === 0),
|
|
322
|
-
blocked: items.filter((item) => item.blockers.length > 0)
|
|
323
|
-
};
|
|
324
|
-
}
|
|
325
|
-
function renderNextWork(result) {
|
|
326
|
-
const renderItem = (item) => `${item.issue.reference} ${item.issue.status} ${item.issue.title}${item.blockers.length > 0 ? ` (blocked by ${item.blockers.join(", ")})` : ""}${item.unblocks.length > 0 ? ` (unblocks ${item.unblocks.join(", ")})` : ""}`;
|
|
327
|
-
return [
|
|
328
|
-
`${result.initiative.reference} next work`,
|
|
329
|
-
"Available",
|
|
330
|
-
...result.available.map(renderItem),
|
|
331
|
-
"Blocked",
|
|
332
|
-
...result.blocked.map(renderItem)
|
|
333
|
-
].join("\n");
|
|
334
|
-
}
|
|
335
|
-
export class RelationsCommand extends PositionalsTenantCommand {
|
|
336
|
-
static paths = [["relations"]];
|
|
337
|
-
directionValue = Option.String("--direction");
|
|
338
|
-
typeValues = Option.String("--type");
|
|
339
|
-
async execute() {
|
|
340
|
-
const direction = this.directionValue ?? "both";
|
|
341
|
-
if (direction !== "incoming" && direction !== "outgoing" && direction !== "both") {
|
|
342
|
-
throw new Error(`Unknown relation direction: ${direction}`);
|
|
343
|
-
}
|
|
344
|
-
const types = parseCsvOption(this.typeValues);
|
|
345
|
-
const allowedTypes = new Set(ALLOWED_RELATIONS.map(({ type }) => type));
|
|
346
|
-
const invalidType = types.find((type) => !allowedTypes.has(type));
|
|
347
|
-
if (invalidType) {
|
|
348
|
-
throw new Error(`Unknown relation type: ${invalidType}`);
|
|
349
|
-
}
|
|
350
|
-
const entityId = requirePositional(this.positionals, 0, "relations <id>");
|
|
351
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store) => {
|
|
352
|
-
const details = await store.queryEntityRelations({
|
|
353
|
-
entityId,
|
|
354
|
-
direction: direction,
|
|
355
|
-
types: types
|
|
356
|
-
});
|
|
357
|
-
this.print(this.asJson ? toCompactEntityDetails(details) : details, renderEntityDetails(details));
|
|
358
|
-
return 0;
|
|
359
|
-
});
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
export class OrphansCommand extends PositionalsTenantCommand {
|
|
363
|
-
static paths = [["orphans"]];
|
|
364
|
-
async execute() {
|
|
365
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store) => {
|
|
366
|
-
const kind = this.positionals[0];
|
|
367
|
-
const entities = kind ? await store.listOrphans(kind) : await store.listOrphans();
|
|
368
|
-
this.print(entities, renderOptionalEntityList("orphaned", entities));
|
|
369
|
-
return 0;
|
|
370
|
-
});
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
export class ShowCommand extends PositionalsTenantCommand {
|
|
374
|
-
static paths = [["show"]];
|
|
375
|
-
async execute() {
|
|
376
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store) => {
|
|
377
|
-
const entityId = requirePositional(this.positionals, 0, "show <id>");
|
|
378
|
-
const details = await store.getEntityDetails(entityId);
|
|
379
|
-
if (details.entity.kind === "initiative") {
|
|
380
|
-
const bundle = await store.getInitiativeBundle(entityId);
|
|
381
|
-
this.print(bundle, renderInitiativeBundle(bundle));
|
|
382
|
-
return 0;
|
|
383
|
-
}
|
|
384
|
-
if (details.entity.kind === "plan") {
|
|
385
|
-
const projection = projectPlanEntries(await store.listPlanEntries({ planId: details.entity.id }));
|
|
386
|
-
const planDetails = { ...details, ...projection };
|
|
387
|
-
this.print(planDetails, renderPlanDetails(planDetails));
|
|
388
|
-
return 0;
|
|
389
|
-
}
|
|
390
|
-
this.print(details, renderEntityDetails(details));
|
|
391
|
-
return 0;
|
|
392
|
-
});
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
export class ListCommand extends PositionalsTenantCommand {
|
|
396
|
-
static paths = [["list"]];
|
|
397
|
-
limit = Option.String("--limit");
|
|
398
|
-
parent = Option.String("--parent");
|
|
399
|
-
statusValues = Option.String("--status");
|
|
400
|
-
async execute() {
|
|
401
|
-
const limit = parsePositiveIntegerOption(this.limit, "--limit");
|
|
402
|
-
const kind = requirePositional(this.positionals, 0, "list <kind>");
|
|
403
|
-
if (!isEntityKind(kind)) {
|
|
404
|
-
throw new Error(`Unknown entity kind: ${kind}`);
|
|
405
|
-
}
|
|
406
|
-
const statuses = parseCsvOption(this.statusValues);
|
|
407
|
-
const invalidStatus = statuses.find((status) => !isValidStatus(kind, status));
|
|
408
|
-
if (invalidStatus) {
|
|
409
|
-
throw new Error(`Invalid ${kind} status: ${invalidStatus}`);
|
|
410
|
-
}
|
|
411
|
-
return withStore(this.dbPath, this.withStoreOptions(), async (store) => {
|
|
412
|
-
const result = await store.queryEntities({ kind, statuses, parentId: this.parent, limit });
|
|
413
|
-
this.print(this.asJson
|
|
414
|
-
? toCompactEntityList(result.entities, result.total, result.openBlockers, result.parentGroups)
|
|
415
|
-
: result.entities, renderEntityList(kind, result.entities, result.openBlockers, result.parentGroups));
|
|
416
|
-
return 0;
|
|
417
|
-
});
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
//# sourceMappingURL=entities.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../../src/cli/commands/entities.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { MutableTenantCommand } from "../shared.js";
|
|
2
|
-
export declare class ExportCommand extends MutableTenantCommand {
|
|
3
|
-
static paths: string[][];
|
|
4
|
-
output: string | undefined;
|
|
5
|
-
positionals: string[];
|
|
6
|
-
singleFile: boolean;
|
|
7
|
-
execute(): Promise<number>;
|
|
8
|
-
protected emitSingleFileExport(input: {
|
|
9
|
-
markdown: string;
|
|
10
|
-
payload: {
|
|
11
|
-
markdown: string;
|
|
12
|
-
mode: "single-file";
|
|
13
|
-
scope: "initiative" | "project";
|
|
14
|
-
initiativeId?: string;
|
|
15
|
-
generatedAt?: string;
|
|
16
|
-
};
|
|
17
|
-
target: string;
|
|
18
|
-
}): number;
|
|
19
|
-
protected resolveOutputPath(target: string): string;
|
|
20
|
-
}
|