@skrr-ai/cli 0.1.99 → 0.1.100
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/commands/commitments/preflight.js +20 -0
- package/dist/commands/memory/mounts/resolve.js +8 -2
- package/dist/commands/memory/stores/list.js +5 -1
- package/dist/commands/proposals/list.js +2 -0
- package/dist/commands/spaces/workflows/create.js +1 -1
- package/dist/commands/spaces/workflows/node-types.d.ts +45 -0
- package/dist/commands/spaces/workflows/node-types.js +86 -0
- package/dist/commands/spaces/workflows/update.js +5 -3
- package/dist/commands/tasks/schedule.js +3 -3
- package/dist/lib/commitment-terms.js +1 -1
- package/dist/lib/scoped-memory-command.d.ts +7 -0
- package/dist/lib/scoped-memory-command.js +36 -0
- package/oclif.manifest.json +83 -9
- package/package.json +1 -1
|
@@ -45,6 +45,26 @@ function preflightGateLines(gate, verbose = false) {
|
|
|
45
45
|
if (hasNote) {
|
|
46
46
|
lines.push(` ${String(note).trim()}`);
|
|
47
47
|
}
|
|
48
|
+
if (gate.id === 'owner_rules') {
|
|
49
|
+
const status = gate.detail?.status;
|
|
50
|
+
const count = gate.detail?.activeRules;
|
|
51
|
+
if (status === 'not_bound') {
|
|
52
|
+
lines.push(' Owner rules: no Compass bound.');
|
|
53
|
+
}
|
|
54
|
+
else if (status === 'unreadable') {
|
|
55
|
+
lines.push(' Active owner rules: unknown (Compass unreadable).');
|
|
56
|
+
}
|
|
57
|
+
else if (status === 'invalid') {
|
|
58
|
+
lines.push(' Active owner rules: unknown (stored rules invalid).');
|
|
59
|
+
}
|
|
60
|
+
else if (status === 'available' && typeof count === 'number' &&
|
|
61
|
+
Number.isSafeInteger(count) && count >= 0) {
|
|
62
|
+
lines.push(` Active owner rules: ${count}${count === 0 ? ' (no active rules configured)' : ''}.`);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
lines.push(' Active owner rules: unknown (count not reported).');
|
|
66
|
+
}
|
|
67
|
+
}
|
|
48
68
|
// `detail.hint` is the actionable plain-words sentence — why the gate is
|
|
49
69
|
// capped and the exact command to lift it. It lived only in --json, so the
|
|
50
70
|
// human view printed the machine code (`autonomy_capped_by_initiative_policy`)
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const core_1 = require("@oclif/core");
|
|
4
4
|
const scoped_memory_command_1 = require("../../../lib/scoped-memory-command");
|
|
5
5
|
class MemoryMountsResolve extends scoped_memory_command_1.ScopedMemoryCommand {
|
|
6
|
-
static description = 'Resolve
|
|
6
|
+
static description = 'Resolve ACL-aware Memory mounts; discovery may initialize default Store metadata';
|
|
7
7
|
static flags = {
|
|
8
8
|
agent: core_1.Flags.string({ required: true }),
|
|
9
9
|
space: core_1.Flags.string({ description: 'Current Space context' }),
|
|
@@ -13,9 +13,15 @@ class MemoryMountsResolve extends scoped_memory_command_1.ScopedMemoryCommand {
|
|
|
13
13
|
this.requireAuth();
|
|
14
14
|
const { flags } = await this.parse(MemoryMountsResolve);
|
|
15
15
|
const response = await this.memoryApi(flags.agent, `/mounts${this.query(flags)}`);
|
|
16
|
-
const
|
|
16
|
+
const storeResolutions = (0, scoped_memory_command_1.parseMemoryStoreResolutions)(response.storeResolutions);
|
|
17
|
+
const result = {
|
|
18
|
+
mounts: response.mounts.map(scoped_memory_command_1.parseMemoryMount),
|
|
19
|
+
...(storeResolutions !== undefined ? { storeResolutions } : {}),
|
|
20
|
+
};
|
|
17
21
|
if (flags.json)
|
|
18
22
|
return this.log(JSON.stringify(result, null, 2));
|
|
23
|
+
for (const line of (0, scoped_memory_command_1.memoryStoreResolutionLines)(storeResolutions))
|
|
24
|
+
this.log(line);
|
|
19
25
|
for (const mount of result.mounts) {
|
|
20
26
|
this.log(`${mount.source} ${mount.uri} ${mount.access} store=${mount.storeId} r${mount.storeRevision} cursor=${mount.cursor}`);
|
|
21
27
|
}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const core_1 = require("@oclif/core");
|
|
4
4
|
const scoped_memory_command_1 = require("../../../lib/scoped-memory-command");
|
|
5
5
|
class MemoryStoresList extends scoped_memory_command_1.ScopedMemoryCommand {
|
|
6
|
-
static description = 'List Memory Stores
|
|
6
|
+
static description = 'List mounted Memory Stores; discovery may initialize default Store metadata';
|
|
7
7
|
static flags = {
|
|
8
8
|
agent: core_1.Flags.string({ required: true }),
|
|
9
9
|
space: core_1.Flags.string({ description: 'Current Space context' }),
|
|
@@ -13,11 +13,15 @@ class MemoryStoresList extends scoped_memory_command_1.ScopedMemoryCommand {
|
|
|
13
13
|
this.requireAuth();
|
|
14
14
|
const { flags } = await this.parse(MemoryStoresList);
|
|
15
15
|
const response = await this.memoryApi(flags.agent, `/stores${this.query(flags)}`);
|
|
16
|
+
const storeResolutions = (0, scoped_memory_command_1.parseMemoryStoreResolutions)(response.storeResolutions);
|
|
16
17
|
const result = {
|
|
17
18
|
stores: response.stores.map(scoped_memory_command_1.parseMountedMemoryStore),
|
|
19
|
+
...(storeResolutions !== undefined ? { storeResolutions } : {}),
|
|
18
20
|
};
|
|
19
21
|
if (flags.json)
|
|
20
22
|
return this.log(JSON.stringify(result, null, 2));
|
|
23
|
+
for (const line of (0, scoped_memory_command_1.memoryStoreResolutionLines)(storeResolutions))
|
|
24
|
+
this.log(line);
|
|
21
25
|
for (const store of result.stores) {
|
|
22
26
|
this.log(`${store.id} ${store.owner.kind}:${store.owner.id} ${store.mount.access} r${store.revision}`);
|
|
23
27
|
}
|
|
@@ -47,6 +47,8 @@ class ProposalsList extends base_command_1.BaseCommand {
|
|
|
47
47
|
this.log(JSON.stringify(result, null, 2));
|
|
48
48
|
return;
|
|
49
49
|
}
|
|
50
|
+
if (!result.data.length)
|
|
51
|
+
this.log('No proposals returned on this page.');
|
|
50
52
|
(0, format_1.renderTable)(result.data.map((row) => ({
|
|
51
53
|
id: row.id,
|
|
52
54
|
title: row.title,
|
|
@@ -29,7 +29,7 @@ class SpacesWorkflowsCreate extends base_command_1.BaseCommand {
|
|
|
29
29
|
title: core_1.Flags.string({ required: true, description: 'Workflow title' }),
|
|
30
30
|
description: core_1.Flags.string({ description: 'Optional description' }),
|
|
31
31
|
graph: core_1.Flags.string({
|
|
32
|
-
description: 'Required exactly once with --draft/--starter: path to graph JSON ({ nodes, edges })',
|
|
32
|
+
description: 'Required exactly once with --draft/--starter: path to graph JSON ({ nodes, edges }); inspect config with spaces workflows node-types',
|
|
33
33
|
exactlyOne: ['graph', 'draft', 'starter'],
|
|
34
34
|
}),
|
|
35
35
|
draft: core_1.Flags.string({
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type WorkflowNodeType } from '@skrr-ai/data-provider';
|
|
2
|
+
import { BaseCommand } from '../../../base-command';
|
|
3
|
+
export declare function workflowNodeTypeReference(type: WorkflowNodeType): {
|
|
4
|
+
type: WorkflowNodeType;
|
|
5
|
+
typeVersion: number;
|
|
6
|
+
label: string;
|
|
7
|
+
description: string;
|
|
8
|
+
requiredConfig: string[];
|
|
9
|
+
fields: {
|
|
10
|
+
path: string;
|
|
11
|
+
name: string;
|
|
12
|
+
label: string;
|
|
13
|
+
kind: import("@skrr-ai/data-provider").WorkflowNodeFieldKind;
|
|
14
|
+
placeholder?: string;
|
|
15
|
+
help?: string;
|
|
16
|
+
showWhen?: {
|
|
17
|
+
field: string;
|
|
18
|
+
equals: unknown;
|
|
19
|
+
};
|
|
20
|
+
options?: Array<{
|
|
21
|
+
value: string;
|
|
22
|
+
label: string;
|
|
23
|
+
}>;
|
|
24
|
+
}[];
|
|
25
|
+
defaultNode: {
|
|
26
|
+
key: string;
|
|
27
|
+
type: WorkflowNodeType;
|
|
28
|
+
typeVersion: number;
|
|
29
|
+
config: Record<string, unknown>;
|
|
30
|
+
join: "all";
|
|
31
|
+
bindings: {};
|
|
32
|
+
};
|
|
33
|
+
outcomes: import("@skrr-ai/data-provider").WorkflowOutcomeSpec[];
|
|
34
|
+
};
|
|
35
|
+
export default class SpacesWorkflowsNodeTypes extends BaseCommand {
|
|
36
|
+
static description: string;
|
|
37
|
+
static examples: string[];
|
|
38
|
+
static args: {
|
|
39
|
+
type: import("@oclif/core/lib/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
40
|
+
};
|
|
41
|
+
static flags: {
|
|
42
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
43
|
+
};
|
|
44
|
+
run(): Promise<void>;
|
|
45
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.workflowNodeTypeReference = workflowNodeTypeReference;
|
|
4
|
+
const core_1 = require("@oclif/core");
|
|
5
|
+
const data_provider_1 = require("@skrr-ai/data-provider");
|
|
6
|
+
const base_command_1 = require("../../../base-command");
|
|
7
|
+
function workflowNodeTypeReference(type) {
|
|
8
|
+
const definition = data_provider_1.WORKFLOW_NODE_TYPES[type];
|
|
9
|
+
const node = {
|
|
10
|
+
key: `${definition.keyPrefix}_1`,
|
|
11
|
+
type,
|
|
12
|
+
typeVersion: definition.version,
|
|
13
|
+
config: definition.defaultConfig(),
|
|
14
|
+
join: 'all',
|
|
15
|
+
bindings: {},
|
|
16
|
+
};
|
|
17
|
+
return {
|
|
18
|
+
type,
|
|
19
|
+
typeVersion: definition.version,
|
|
20
|
+
label: definition.label,
|
|
21
|
+
description: definition.description,
|
|
22
|
+
requiredConfig: definition.requiredConfig,
|
|
23
|
+
fields: definition.fields.map((field) => ({
|
|
24
|
+
...field,
|
|
25
|
+
path: field.name === 'join' ? 'join' : `config.${field.name}`,
|
|
26
|
+
})),
|
|
27
|
+
defaultNode: node,
|
|
28
|
+
outcomes: definition.outcomes(node),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
class SpacesWorkflowsNodeTypes extends base_command_1.BaseCommand {
|
|
32
|
+
static description = 'Read node config fields, defaults and review lens preset choices from the installed CLI catalog (no server requests)';
|
|
33
|
+
static examples = [
|
|
34
|
+
'<%= config.bin %> spaces workflows node-types',
|
|
35
|
+
'<%= config.bin %> spaces workflows node-types loop --json',
|
|
36
|
+
'<%= config.bin %> spaces workflows node-types review_loop --json',
|
|
37
|
+
];
|
|
38
|
+
static args = {
|
|
39
|
+
type: core_1.Args.string({ description: 'Node type; omit to list all types', ignoreStdin: true }),
|
|
40
|
+
};
|
|
41
|
+
static flags = {
|
|
42
|
+
json: core_1.Flags.boolean({ description: 'Output node fields, choices and default node JSON' }),
|
|
43
|
+
};
|
|
44
|
+
async run() {
|
|
45
|
+
const { args, flags } = await this.parse(SpacesWorkflowsNodeTypes);
|
|
46
|
+
if (args.type && !(0, data_provider_1.isWorkflowNodeType)(args.type)) {
|
|
47
|
+
this.failWithCliError({
|
|
48
|
+
message: `Unknown node type: ${args.type}. Run skrr spaces workflows node-types to list types.`,
|
|
49
|
+
code: 'WORKFLOW_NODE_TYPE_UNKNOWN',
|
|
50
|
+
exit: 2,
|
|
51
|
+
retryable: false,
|
|
52
|
+
});
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const types = args.type
|
|
56
|
+
? [args.type]
|
|
57
|
+
: Object.keys(data_provider_1.WORKFLOW_NODE_TYPES);
|
|
58
|
+
const references = types.map(workflowNodeTypeReference);
|
|
59
|
+
const note = 'Installed CLI authoring reference. Defaults may require configuration; fill required fields and agent choices, then validate the draft against your server before publishing.';
|
|
60
|
+
if (flags.json) {
|
|
61
|
+
this.log(JSON.stringify({
|
|
62
|
+
object: 'workflow_node_catalog', source: 'installed_cli', note, nodeTypes: references,
|
|
63
|
+
}, null, 2));
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
this.log(note);
|
|
67
|
+
for (const reference of references) {
|
|
68
|
+
this.log(`\n${reference.type} · ${reference.label} · v${reference.typeVersion}`);
|
|
69
|
+
if (!args.type)
|
|
70
|
+
continue;
|
|
71
|
+
this.log(reference.description);
|
|
72
|
+
this.log(`Required config keys: ${reference.requiredConfig.join(', ') || 'none declared'}`);
|
|
73
|
+
for (const field of reference.fields) {
|
|
74
|
+
const choices = field.options?.length
|
|
75
|
+
? ` (${field.options.map((option) => option.value).join(', ')})` : '';
|
|
76
|
+
this.log(` ${field.path}: ${field.label}${choices}`);
|
|
77
|
+
if (field.help)
|
|
78
|
+
this.log(` ${field.help}`);
|
|
79
|
+
}
|
|
80
|
+
this.log(`Default node: ${JSON.stringify(reference.defaultNode, null, 2)}`);
|
|
81
|
+
}
|
|
82
|
+
if (!args.type)
|
|
83
|
+
this.log('\nRead one type: skrr spaces workflows node-types <type> --json');
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.default = SpacesWorkflowsNodeTypes;
|
|
@@ -51,19 +51,21 @@ class SpacesWorkflowsUpdate extends base_command_1.BaseCommand {
|
|
|
51
51
|
title: core_1.Flags.string({ description: 'New workflow title' }),
|
|
52
52
|
description: core_1.Flags.string({ description: 'New workflow description' }),
|
|
53
53
|
'clear-description': core_1.Flags.boolean({ description: 'Remove the workflow description' }),
|
|
54
|
-
graph: core_1.Flags.string({
|
|
54
|
+
graph: core_1.Flags.string({
|
|
55
|
+
description: 'Path to graph JSON ({ nodes, edges }); inspect config with spaces workflows node-types',
|
|
56
|
+
}),
|
|
55
57
|
draft: core_1.Flags.string({
|
|
56
58
|
description: 'Path to complete draft JSON ({ semantic, presentation })',
|
|
57
59
|
}),
|
|
58
60
|
'semantic-revision': core_1.Flags.integer({
|
|
59
|
-
description: 'Expected semantic revision;
|
|
61
|
+
description: 'Expected semantic revision; pass with --presentation-revision. For graph/draft writes, omit both to fetch the latest server revisions',
|
|
60
62
|
}),
|
|
61
63
|
'max-duration': core_1.Flags.string({
|
|
62
64
|
description: 'Run duration limit, e.g. 90m, 4h or 2d. A run still open past it is cancelled with WORKFLOW_RUN_DEADLINE. Applies from the next publish; runs already started keep their deadline',
|
|
63
65
|
}),
|
|
64
66
|
'clear-max-duration': core_1.Flags.boolean({ description: 'Remove the run duration limit' }),
|
|
65
67
|
'presentation-revision': core_1.Flags.integer({
|
|
66
|
-
description: 'Expected presentation revision;
|
|
68
|
+
description: 'Expected presentation revision; pass with --semantic-revision. For graph/draft writes, omit both to fetch the latest server revisions',
|
|
67
69
|
}),
|
|
68
70
|
};
|
|
69
71
|
async run() {
|
|
@@ -18,7 +18,7 @@ class TasksSchedule extends base_command_1.BaseCommand {
|
|
|
18
18
|
static flags = {
|
|
19
19
|
json: core_1.Flags.boolean({ description: 'Output as JSON' }),
|
|
20
20
|
at: core_1.Flags.string({
|
|
21
|
-
description: 'First fire time as ISO-8601 UTC (e.g. 2026-06-01T15:30:00Z)',
|
|
21
|
+
description: 'First fire time as ISO-8601 UTC ending in Z (e.g. 2026-06-01T15:30:00Z); numeric offsets such as +00:00 are not accepted',
|
|
22
22
|
}),
|
|
23
23
|
cron: core_1.Flags.string({
|
|
24
24
|
description: 'Recurrence cron pattern (UTC unless --timezone is set)',
|
|
@@ -36,7 +36,7 @@ class TasksSchedule extends base_command_1.BaseCommand {
|
|
|
36
36
|
dependsOn: ['cron'],
|
|
37
37
|
}),
|
|
38
38
|
'from-json': core_1.Flags.string({
|
|
39
|
-
description: 'Path to a JSON file (or "-" for stdin) with the schedule body',
|
|
39
|
+
description: 'Path to a JSON file (or "-" for stdin) with the schedule body; scheduledFor must use ISO-8601 UTC ending in Z',
|
|
40
40
|
}),
|
|
41
41
|
};
|
|
42
42
|
async run() {
|
|
@@ -63,7 +63,7 @@ class TasksSchedule extends base_command_1.BaseCommand {
|
|
|
63
63
|
recurrence,
|
|
64
64
|
});
|
|
65
65
|
if (!payload.scheduledFor || typeof payload.scheduledFor !== 'string') {
|
|
66
|
-
this.error('A first-fire time is required. Pass --at <ISO-8601> or include scheduledFor in --from-json.', { exit: 1 });
|
|
66
|
+
this.error('A first-fire time is required. Pass --at <ISO-8601 UTC ending in Z> or include scheduledFor in --from-json using the same format.', { exit: 1 });
|
|
67
67
|
}
|
|
68
68
|
let result;
|
|
69
69
|
try {
|
|
@@ -82,7 +82,7 @@ function renderCommitmentTerms(commitment, log) {
|
|
|
82
82
|
? `${subject.type} ${subject.label || subject.externalKey}`
|
|
83
83
|
: 'standing (not about one instance)'}`);
|
|
84
84
|
const sensors = commitment.sensors ?? [];
|
|
85
|
-
log(`
|
|
85
|
+
log(`Sensors: ${sensors.length
|
|
86
86
|
? sensors
|
|
87
87
|
.map((s) => `${sensorRefKey(s)}${s.sensorType ? ` (${s.sensorType})` : ''}`)
|
|
88
88
|
.join(', ')
|
|
@@ -5,6 +5,13 @@ export type MemoryMount = SharedMemoryMount;
|
|
|
5
5
|
export type MemoryStore = SharedMemoryStore & {
|
|
6
6
|
mount: SharedMemoryMount;
|
|
7
7
|
};
|
|
8
|
+
export type MemoryStoreResolution = {
|
|
9
|
+
storeId: string;
|
|
10
|
+
outcome: 'existing' | 'created' | 'adopted' | 'existing_after_race' | 'unconfirmed';
|
|
11
|
+
metadataChanged: boolean | null;
|
|
12
|
+
};
|
|
13
|
+
export declare function parseMemoryStoreResolutions(value: unknown): MemoryStoreResolution[] | undefined;
|
|
14
|
+
export declare function memoryStoreResolutionLines(resolutions?: MemoryStoreResolution[]): string[];
|
|
8
15
|
export declare function parseMemoryMount(value: unknown): MemoryMount;
|
|
9
16
|
export declare function parseMountedMemoryStore(value: unknown): MemoryStore;
|
|
10
17
|
export declare const scopedMemoryFlags: {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ScopedMemoryCommand = exports.versionedMutationFlags = exports.mutationFlags = exports.scopedMemoryFlags = void 0;
|
|
4
|
+
exports.parseMemoryStoreResolutions = parseMemoryStoreResolutions;
|
|
5
|
+
exports.memoryStoreResolutionLines = memoryStoreResolutionLines;
|
|
4
6
|
exports.parseMemoryMount = parseMemoryMount;
|
|
5
7
|
exports.parseMountedMemoryStore = parseMountedMemoryStore;
|
|
6
8
|
exports.parseMemoryApiError = parseMemoryApiError;
|
|
@@ -8,6 +10,40 @@ const core_1 = require("@oclif/core");
|
|
|
8
10
|
const node_crypto_1 = require("node:crypto");
|
|
9
11
|
const base_command_1 = require("../base-command");
|
|
10
12
|
const api_fetch_1 = require("./api-fetch");
|
|
13
|
+
function parseMemoryStoreResolutions(value) {
|
|
14
|
+
if (value === undefined)
|
|
15
|
+
return undefined;
|
|
16
|
+
if (!Array.isArray(value))
|
|
17
|
+
throw new Error('Invalid Memory Store resolution response from server');
|
|
18
|
+
return value.map((entry) => {
|
|
19
|
+
const resolution = entry;
|
|
20
|
+
const changed = resolution?.outcome === 'created' || resolution?.outcome === 'adopted';
|
|
21
|
+
const expectedChange = resolution?.outcome === 'unconfirmed' ? null : changed;
|
|
22
|
+
if (!resolution || typeof resolution.storeId !== 'string' || !resolution.storeId ||
|
|
23
|
+
!['existing', 'created', 'adopted', 'existing_after_race', 'unconfirmed']
|
|
24
|
+
.includes(String(resolution.outcome)) || resolution.metadataChanged !== expectedChange) {
|
|
25
|
+
throw new Error('Invalid Memory Store resolution response from server');
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
storeId: resolution.storeId,
|
|
29
|
+
outcome: resolution.outcome,
|
|
30
|
+
metadataChanged: resolution.metadataChanged,
|
|
31
|
+
};
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
function memoryStoreResolutionLines(resolutions) {
|
|
35
|
+
if (!resolutions) {
|
|
36
|
+
return ['Store initialization outcome was not reported by this server; discovery may create default Store metadata or adopt a legacy Store into this workspace.'];
|
|
37
|
+
}
|
|
38
|
+
const labels = {
|
|
39
|
+
existing: 'Reused existing Store metadata',
|
|
40
|
+
created: 'Created default Store metadata',
|
|
41
|
+
adopted: 'Adopted legacy Store metadata into this workspace',
|
|
42
|
+
existing_after_race: 'Reused Store metadata from a concurrent creator',
|
|
43
|
+
unconfirmed: 'Store metadata initialization outcome is unconfirmed',
|
|
44
|
+
};
|
|
45
|
+
return resolutions.map((resolution) => `${labels[resolution.outcome]}: ${resolution.storeId}`);
|
|
46
|
+
}
|
|
11
47
|
// The public CLI must not load the private data-schemas package at runtime.
|
|
12
48
|
// The API validates the full wire contract; check the fields used by CLI commands
|
|
13
49
|
// before treating a response as a mounted Store or mount.
|
package/oclif.manifest.json
CHANGED
|
@@ -63745,7 +63745,7 @@
|
|
|
63745
63745
|
"memory:mounts:resolve": {
|
|
63746
63746
|
"aliases": [],
|
|
63747
63747
|
"args": {},
|
|
63748
|
-
"description": "Resolve
|
|
63748
|
+
"description": "Resolve ACL-aware Memory mounts; discovery may initialize default Store metadata",
|
|
63749
63749
|
"flags": {
|
|
63750
63750
|
"bare": {
|
|
63751
63751
|
"description": "Bare mode — ignore keychain/file credential sources. Token must come from env or --token.",
|
|
@@ -65674,7 +65674,7 @@
|
|
|
65674
65674
|
"memory:stores:list": {
|
|
65675
65675
|
"aliases": [],
|
|
65676
65676
|
"args": {},
|
|
65677
|
-
"description": "List Memory Stores
|
|
65677
|
+
"description": "List mounted Memory Stores; discovery may initialize default Store metadata",
|
|
65678
65678
|
"flags": {
|
|
65679
65679
|
"bare": {
|
|
65680
65680
|
"description": "Bare mode — ignore keychain/file credential sources. Token must come from env or --token.",
|
|
@@ -94243,7 +94243,7 @@
|
|
|
94243
94243
|
"type": "option"
|
|
94244
94244
|
},
|
|
94245
94245
|
"graph": {
|
|
94246
|
-
"description": "Required exactly once with --draft/--starter: path to graph JSON ({ nodes, edges })",
|
|
94246
|
+
"description": "Required exactly once with --draft/--starter: path to graph JSON ({ nodes, edges }); inspect config with spaces workflows node-types",
|
|
94247
94247
|
"name": "graph",
|
|
94248
94248
|
"hasDynamicHelp": false,
|
|
94249
94249
|
"multiple": false,
|
|
@@ -94726,6 +94726,80 @@
|
|
|
94726
94726
|
"list.js"
|
|
94727
94727
|
]
|
|
94728
94728
|
},
|
|
94729
|
+
"spaces:workflows:node-types": {
|
|
94730
|
+
"aliases": [],
|
|
94731
|
+
"args": {
|
|
94732
|
+
"type": {
|
|
94733
|
+
"description": "Node type; omit to list all types",
|
|
94734
|
+
"name": "type"
|
|
94735
|
+
}
|
|
94736
|
+
},
|
|
94737
|
+
"description": "Read node config fields, defaults and review lens preset choices from the installed CLI catalog (no server requests)",
|
|
94738
|
+
"examples": [
|
|
94739
|
+
"<%= config.bin %> spaces workflows node-types",
|
|
94740
|
+
"<%= config.bin %> spaces workflows node-types loop --json",
|
|
94741
|
+
"<%= config.bin %> spaces workflows node-types review_loop --json"
|
|
94742
|
+
],
|
|
94743
|
+
"flags": {
|
|
94744
|
+
"bare": {
|
|
94745
|
+
"description": "Bare mode — ignore keychain/file credential sources. Token must come from env or --token.",
|
|
94746
|
+
"name": "bare",
|
|
94747
|
+
"allowNo": false,
|
|
94748
|
+
"type": "boolean"
|
|
94749
|
+
},
|
|
94750
|
+
"token": {
|
|
94751
|
+
"description": "Bearer token for this invocation (debugging/impersonation). Overrides env and stored creds.",
|
|
94752
|
+
"name": "token",
|
|
94753
|
+
"hasDynamicHelp": false,
|
|
94754
|
+
"multiple": false,
|
|
94755
|
+
"type": "option"
|
|
94756
|
+
},
|
|
94757
|
+
"workspace": {
|
|
94758
|
+
"description": "Workspace ID for workspace-scoped requests (also sets X-Workspace-Id).",
|
|
94759
|
+
"name": "workspace",
|
|
94760
|
+
"hasDynamicHelp": false,
|
|
94761
|
+
"multiple": false,
|
|
94762
|
+
"type": "option"
|
|
94763
|
+
},
|
|
94764
|
+
"profile": {
|
|
94765
|
+
"description": "Which stored session to use. Each profile keeps its own credential and deployment, so signing into one does not sign you out of another. Also OVERSKY_PROFILE. List them with `profiles list`.",
|
|
94766
|
+
"name": "profile",
|
|
94767
|
+
"hasDynamicHelp": false,
|
|
94768
|
+
"multiple": false,
|
|
94769
|
+
"type": "option"
|
|
94770
|
+
},
|
|
94771
|
+
"raw": {
|
|
94772
|
+
"description": "With --json, keep the Mongo storage fields (_id next to id, __v) that the CLI otherwise strips. Also OVERSKY_CLI_RAW=1.",
|
|
94773
|
+
"name": "raw",
|
|
94774
|
+
"allowNo": false,
|
|
94775
|
+
"type": "boolean"
|
|
94776
|
+
},
|
|
94777
|
+
"json": {
|
|
94778
|
+
"description": "Output node fields, choices and default node JSON",
|
|
94779
|
+
"name": "json",
|
|
94780
|
+
"allowNo": false,
|
|
94781
|
+
"type": "boolean"
|
|
94782
|
+
}
|
|
94783
|
+
},
|
|
94784
|
+
"hasDynamicHelp": false,
|
|
94785
|
+
"hiddenAliases": [],
|
|
94786
|
+
"id": "spaces:workflows:node-types",
|
|
94787
|
+
"pluginAlias": "@skrr-ai/cli",
|
|
94788
|
+
"pluginName": "@skrr-ai/cli",
|
|
94789
|
+
"pluginType": "core",
|
|
94790
|
+
"strict": true,
|
|
94791
|
+
"enableJsonFlag": false,
|
|
94792
|
+
"autonomousCredentialPolicy": "delegated",
|
|
94793
|
+
"resolveSpaceFlag": true,
|
|
94794
|
+
"isESM": false,
|
|
94795
|
+
"relativePath": [
|
|
94796
|
+
"dist",
|
|
94797
|
+
"commands",
|
|
94798
|
+
"spaces",
|
|
94799
|
+
"workflows",
|
|
94800
|
+
"node-types.js"
|
|
94801
|
+
]
|
|
94802
|
+
},
|
|
94729
94803
|
"spaces:workflows:pause": {
|
|
94730
94804
|
"aliases": [],
|
|
94731
94805
|
"args": {
|
|
@@ -96892,7 +96966,7 @@
|
|
|
96892
96966
|
"type": "boolean"
|
|
96893
96967
|
},
|
|
96894
96968
|
"graph": {
|
|
96895
|
-
"description": "Path to graph JSON ({ nodes, edges })",
|
|
96969
|
+
"description": "Path to graph JSON ({ nodes, edges }); inspect config with spaces workflows node-types",
|
|
96896
96970
|
"name": "graph",
|
|
96897
96971
|
"hasDynamicHelp": false,
|
|
96898
96972
|
"multiple": false,
|
|
@@ -96906,7 +96980,7 @@
|
|
|
96906
96980
|
"type": "option"
|
|
96907
96981
|
},
|
|
96908
96982
|
"semantic-revision": {
|
|
96909
|
-
"description": "Expected semantic revision;
|
|
96983
|
+
"description": "Expected semantic revision; pass with --presentation-revision. For graph/draft writes, omit both to fetch the latest server revisions",
|
|
96910
96984
|
"name": "semantic-revision",
|
|
96911
96985
|
"hasDynamicHelp": false,
|
|
96912
96986
|
"multiple": false,
|
|
@@ -96926,7 +97000,7 @@
|
|
|
96926
97000
|
"type": "boolean"
|
|
96927
97001
|
},
|
|
96928
97002
|
"presentation-revision": {
|
|
96929
|
-
"description": "Expected presentation revision;
|
|
97003
|
+
"description": "Expected presentation revision; pass with --semantic-revision. For graph/draft writes, omit both to fetch the latest server revisions",
|
|
96930
97004
|
"name": "presentation-revision",
|
|
96931
97005
|
"hasDynamicHelp": false,
|
|
96932
97006
|
"multiple": false,
|
|
@@ -117133,7 +117207,7 @@
|
|
|
117133
117207
|
"type": "boolean"
|
|
117134
117208
|
},
|
|
117135
117209
|
"at": {
|
|
117136
|
-
"description": "First fire time as ISO-8601 UTC (e.g. 2026-06-01T15:30:00Z)",
|
|
117210
|
+
"description": "First fire time as ISO-8601 UTC ending in Z (e.g. 2026-06-01T15:30:00Z); numeric offsets such as +00:00 are not accepted",
|
|
117137
117211
|
"name": "at",
|
|
117138
117212
|
"hasDynamicHelp": false,
|
|
117139
117213
|
"multiple": false,
|
|
@@ -117177,7 +117251,7 @@
|
|
|
117177
117251
|
"type": "option"
|
|
117178
117252
|
},
|
|
117179
117253
|
"from-json": {
|
|
117180
|
-
"description": "Path to a JSON file (or \"-\" for stdin) with the schedule body",
|
|
117254
|
+
"description": "Path to a JSON file (or \"-\" for stdin) with the schedule body; scheduledFor must use ISO-8601 UTC ending in Z",
|
|
117181
117255
|
"name": "from-json",
|
|
117182
117256
|
"hasDynamicHelp": false,
|
|
117183
117257
|
"multiple": false,
|
|
@@ -131288,5 +131362,5 @@
|
|
|
131288
131362
|
]
|
|
131289
131363
|
}
|
|
131290
131364
|
},
|
|
131291
|
-
"version": "0.1.
|
|
131365
|
+
"version": "0.1.100"
|
|
131292
131366
|
}
|