overlord-cli 0.2608181615.0 → 0.2608191441.0
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/connectors/VERSION +1 -1
- package/dist/connectors/adapters/antigravity/plugin.json +1 -1
- package/dist/connectors/adapters/claude/.claude-plugin/plugin.json +1 -1
- package/dist/connectors/adapters/codex/.codex-plugin/plugin.json +1 -1
- package/dist/connectors/adapters/cursor/.cursor-plugin/plugin.json +1 -1
- package/dist/connectors/core/overlord-mission/SKILL.md +1 -1
- package/dist/connectors/core/scripts/overlord-mcp.mjs +52 -6
- package/dist/index.js +96 -5
- package/dist/index.js.map +3 -3
- package/package.json +1 -1
package/dist/connectors/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.3.
|
|
1
|
+
0.3.29
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://antigravity.google/schemas/v1/plugin.json",
|
|
3
3
|
"name": "overlord",
|
|
4
|
-
"version": "0.3.
|
|
4
|
+
"version": "0.3.29",
|
|
5
5
|
"description": "Chat-driven access to Overlord mission protocol workflows through skills and MCP.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Cooperativ",
|
|
@@ -84,7 +84,7 @@ Use this mode when the conversation starts normally and the user asks the agent
|
|
|
84
84
|
When you open or discuss an existing mission that has a draft objective, submit it with `ovld protocol discuss-objective --mission-id <mission_id>`.
|
|
85
85
|
4. If the user wants to route the current session onto an existing mission by ID, run `ovld protocol connect --mission-id <mission_id>` (add `--objective-id <objective_id>` to pin the session to a specific objective).
|
|
86
86
|
5. If the user wants to establish a persistent session with a mission by ID, run `ovld protocol attach --mission-id <mission_id>`.
|
|
87
|
-
6. If the user wants to find a mission but does not know the ID, run `ovld protocol search-missions --query "..." --status
|
|
87
|
+
6. If the user wants to find a mission but does not know the ID, run `ovld protocol search-missions --query "..." --status execute,review` and ask the user to confirm.
|
|
88
88
|
7. If you need to understand project routing before prompting, use `ovld protocol discover-project`.
|
|
89
89
|
8. If the user wants to **record work that is already finished** in this chat (for example, something you just built in a chat app) as a completed mission, run `ovld protocol record-work` (or the hosted `overlord_record_work` MCP tool). This creates a mission with one completed objective, records the file changes with rationales, lands it in the review column, and runs the standard Gemini delivery summary — all in one call, with no `attach`/`deliver`. Do **not** use it for in-progress work. The exact submission format is in [reference/record-work.md](reference/record-work.md).
|
|
90
90
|
9. If you need other lifecycle commands or flags, run `ovld protocol help` and use the real subcommand list instead of guessing.
|
|
@@ -110,14 +110,37 @@ const tools = [
|
|
|
110
110
|
['name']
|
|
111
111
|
)
|
|
112
112
|
},
|
|
113
|
+
{
|
|
114
|
+
name: 'overlord_list_project_statuses',
|
|
115
|
+
title: 'List Overlord project statuses',
|
|
116
|
+
description:
|
|
117
|
+
"Read one project's board columns. Status names and order are defined per project, so two projects in the same workspace can label the same lifecycle differently; each status also carries a stable type (draft, next, execute, review, complete, blocked, cancelled) that does not vary by project.",
|
|
118
|
+
inputSchema: objectSchema(
|
|
119
|
+
{
|
|
120
|
+
projectId: stringProperty('Overlord project id, slug, or name.')
|
|
121
|
+
},
|
|
122
|
+
['projectId']
|
|
123
|
+
)
|
|
124
|
+
},
|
|
113
125
|
{
|
|
114
126
|
name: 'overlord_search_missions',
|
|
115
127
|
title: 'Search Overlord missions',
|
|
116
|
-
description:
|
|
128
|
+
description:
|
|
129
|
+
"Search missions across the caller's authorized workspaces in one organization. Returns applied filters and truncation metadata; complete and cancelled missions remain eligible by default.",
|
|
117
130
|
inputSchema: objectSchema({
|
|
118
131
|
query: stringProperty('Search query text.'),
|
|
119
|
-
status: stringProperty(
|
|
120
|
-
|
|
132
|
+
status: stringProperty(
|
|
133
|
+
'Comma-separated status TYPES, such as draft,next,execute,review. Types are workspace-invariant (draft, next, execute, review, complete, blocked, cancelled). Project-defined status names are not accepted here.'
|
|
134
|
+
),
|
|
135
|
+
projectId: stringProperty(
|
|
136
|
+
'Optional stable Overlord project UUID. Resolve a human project reference first.'
|
|
137
|
+
),
|
|
138
|
+
resourceKey: stringProperty(
|
|
139
|
+
'Optional logical resource key, matched by name within selected projects.'
|
|
140
|
+
),
|
|
141
|
+
dateField: stringProperty('Date column for an explicit range: createdAt or updatedAt.'),
|
|
142
|
+
from: stringProperty('Optional inclusive ISO-8601 date/time lower bound.'),
|
|
143
|
+
to: stringProperty('Optional exclusive ISO-8601 date/time upper bound.'),
|
|
121
144
|
limit: {
|
|
122
145
|
type: 'number',
|
|
123
146
|
description: 'Maximum result count. Defaults to 25.'
|
|
@@ -399,6 +422,17 @@ function requiredString(args, name) {
|
|
|
399
422
|
return value;
|
|
400
423
|
}
|
|
401
424
|
|
|
425
|
+
function optionalProjectUuid(args) {
|
|
426
|
+
const projectId = optionalString(args, 'projectId');
|
|
427
|
+
if (!projectId) return null;
|
|
428
|
+
if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(projectId)) {
|
|
429
|
+
throw new Error(
|
|
430
|
+
'projectId must be a stable Overlord project UUID; resolve human references first'
|
|
431
|
+
);
|
|
432
|
+
}
|
|
433
|
+
return projectId;
|
|
434
|
+
}
|
|
435
|
+
|
|
402
436
|
/**
|
|
403
437
|
* Forward mission/objective addressing to the CLI. The CLI owns the shared
|
|
404
438
|
* `@overlord/contract` parser and derives a mission from a display id before it
|
|
@@ -440,13 +474,25 @@ function callOverlordTool(name, args) {
|
|
|
440
474
|
...(optionalString(args, 'slug') ? { slug: requiredString(args, 'slug') } : {})
|
|
441
475
|
});
|
|
442
476
|
}
|
|
477
|
+
if (name === 'overlord_list_project_statuses') {
|
|
478
|
+
return runProtocol('statuses', {
|
|
479
|
+
'project-id': requiredString(args, 'projectId')
|
|
480
|
+
});
|
|
481
|
+
}
|
|
443
482
|
if (name === 'overlord_search_missions') {
|
|
444
483
|
return runProtocol('search-missions', {
|
|
484
|
+
'response-version': '2',
|
|
445
485
|
...(optionalString(args, 'query') ? { query: requiredString(args, 'query') } : {}),
|
|
446
486
|
...(optionalString(args, 'status') ? { status: requiredString(args, 'status') } : {}),
|
|
447
|
-
...(
|
|
448
|
-
|
|
487
|
+
...(optionalProjectUuid(args) ? { 'project-id': optionalProjectUuid(args) } : {}),
|
|
488
|
+
...(optionalString(args, 'resourceKey')
|
|
489
|
+
? { 'resource-key': requiredString(args, 'resourceKey') }
|
|
490
|
+
: {}),
|
|
491
|
+
...(optionalString(args, 'dateField')
|
|
492
|
+
? { 'date-field': requiredString(args, 'dateField') }
|
|
449
493
|
: {}),
|
|
494
|
+
...(optionalString(args, 'from') ? { from: requiredString(args, 'from') } : {}),
|
|
495
|
+
...(optionalString(args, 'to') ? { to: requiredString(args, 'to') } : {}),
|
|
450
496
|
...(typeof args.limit === 'number' && Number.isFinite(args.limit)
|
|
451
497
|
? { limit: String(Math.trunc(args.limit)) }
|
|
452
498
|
: {})
|
|
@@ -644,7 +690,7 @@ process.stdin.on('data', async chunk => {
|
|
|
644
690
|
result: {
|
|
645
691
|
protocolVersion: PROTOCOL_VERSION,
|
|
646
692
|
capabilities: { tools: { listChanged: false } },
|
|
647
|
-
serverInfo: { name: 'overlord-__OVERLORD_ADAPTER_KEY__', version: '0.3.
|
|
693
|
+
serverInfo: { name: 'overlord-__OVERLORD_ADAPTER_KEY__', version: '0.3.29' }
|
|
648
694
|
}
|
|
649
695
|
});
|
|
650
696
|
continue;
|
package/dist/index.js
CHANGED
|
@@ -18725,6 +18725,13 @@ var init_migration_ledger = __esm({
|
|
|
18725
18725
|
}
|
|
18726
18726
|
});
|
|
18727
18727
|
|
|
18728
|
+
// ../database/dist/next-status-type-migration-runtime.js
|
|
18729
|
+
var init_next_status_type_migration_runtime = __esm({
|
|
18730
|
+
"../database/dist/next-status-type-migration-runtime.js"() {
|
|
18731
|
+
"use strict";
|
|
18732
|
+
}
|
|
18733
|
+
});
|
|
18734
|
+
|
|
18728
18735
|
// ../database/dist/objective-display-key.js
|
|
18729
18736
|
var init_objective_display_key = __esm({
|
|
18730
18737
|
"../database/dist/objective-display-key.js"() {
|
|
@@ -18749,6 +18756,13 @@ var init_project_resources_resource_key_migration_runtime = __esm({
|
|
|
18749
18756
|
}
|
|
18750
18757
|
});
|
|
18751
18758
|
|
|
18759
|
+
// ../database/dist/project-statuses-migration-runtime.js
|
|
18760
|
+
var init_project_statuses_migration_runtime = __esm({
|
|
18761
|
+
"../database/dist/project-statuses-migration-runtime.js"() {
|
|
18762
|
+
"use strict";
|
|
18763
|
+
}
|
|
18764
|
+
});
|
|
18765
|
+
|
|
18752
18766
|
// ../database/dist/connection.js
|
|
18753
18767
|
var init_connection = __esm({
|
|
18754
18768
|
"../database/dist/connection.js"() {
|
|
@@ -18758,8 +18772,10 @@ var init_connection = __esm({
|
|
|
18758
18772
|
init_ext_everhour_migration_runtime();
|
|
18759
18773
|
init_local_paths();
|
|
18760
18774
|
init_migration_ledger();
|
|
18775
|
+
init_next_status_type_migration_runtime();
|
|
18761
18776
|
init_objective_display_key_migration_runtime();
|
|
18762
18777
|
init_project_resources_resource_key_migration_runtime();
|
|
18778
|
+
init_project_statuses_migration_runtime();
|
|
18763
18779
|
}
|
|
18764
18780
|
});
|
|
18765
18781
|
|
|
@@ -18787,6 +18803,7 @@ var init_migrate_postgres = __esm({
|
|
|
18787
18803
|
init_ext_everhour_migration_runtime();
|
|
18788
18804
|
init_migration_ledger();
|
|
18789
18805
|
init_objective_display_key_migration_runtime();
|
|
18806
|
+
init_project_statuses_migration_runtime();
|
|
18790
18807
|
}
|
|
18791
18808
|
});
|
|
18792
18809
|
|
|
@@ -20960,14 +20977,37 @@ load-context:
|
|
|
20960
20977
|
|
|
20961
20978
|
search-missions:
|
|
20962
20979
|
Purpose:
|
|
20963
|
-
Find missions by keyword, status, or project.
|
|
20980
|
+
Find missions by keyword, status type, or project.
|
|
20964
20981
|
Optional:
|
|
20965
20982
|
--query <text> Free-text search
|
|
20966
|
-
--status <csv> Comma-separated
|
|
20967
|
-
|
|
20983
|
+
--status <csv> Comma-separated status TYPES (e.g. execute,review).
|
|
20984
|
+
Types are workspace-invariant: draft, next, execute, review,
|
|
20985
|
+
complete, blocked, cancelled. Project-defined status
|
|
20986
|
+
names (board column labels) are not accepted here \u2014
|
|
20987
|
+
use \`statuses\` to read one project's names.
|
|
20988
|
+
--project-id <id|slug|name> Restrict to one project (CLI resolves human references)
|
|
20989
|
+
--resource-key <csv> Restrict to logical resource key names
|
|
20990
|
+
--date-field <createdAt|updatedAt>
|
|
20991
|
+
Date column for explicit range filtering
|
|
20992
|
+
--from <ISO-8601> Inclusive date/time lower bound
|
|
20993
|
+
--to <ISO-8601> Exclusive date/time upper bound
|
|
20968
20994
|
--limit <n> Max results (default: 25)
|
|
20995
|
+
--response-version <1|2> 1 (default) returns the legacy array; 2 returns
|
|
20996
|
+
SearchMissionsResponseV2 with snippets, match
|
|
20997
|
+
evidence, appliedFilters, and truncation counts
|
|
20969
20998
|
Returns:
|
|
20970
|
-
JSON with matching missions.
|
|
20999
|
+
JSON with matching missions (v1) or the versioned search envelope (v2).
|
|
21000
|
+
|
|
21001
|
+
statuses:
|
|
21002
|
+
Purpose:
|
|
21003
|
+
List one project's board columns. Statuses are defined per project, so their
|
|
21004
|
+
names and order vary between projects in the same workspace; the status TYPE
|
|
21005
|
+
of each column does not.
|
|
21006
|
+
Required:
|
|
21007
|
+
--project-id <id> Project id, slug, or name
|
|
21008
|
+
Returns:
|
|
21009
|
+
JSON array of statuses ordered by position, each with id, projectId, key,
|
|
21010
|
+
name, type, position, isDefault, and isTerminal.
|
|
20971
21011
|
|
|
20972
21012
|
discuss-objective:
|
|
20973
21013
|
Purpose:
|
|
@@ -23988,8 +24028,10 @@ async function runManagementCommand({
|
|
|
23988
24028
|
const query = flagValue(parsed.flags, "--query");
|
|
23989
24029
|
const projectId = flagValue(parsed.flags, "--project-id");
|
|
23990
24030
|
const limit = flagValue(parsed.flags, "--limit");
|
|
24031
|
+
const statusTypes = (flagValue(parsed.flags, "--status") ?? "").split(",").map((value) => value.trim()).filter((value) => value !== "");
|
|
23991
24032
|
if (query) params.set("q", query);
|
|
23992
24033
|
if (projectId) params.set("projectId", projectId);
|
|
24034
|
+
if (statusTypes.length > 0) params.set("statusTypes", statusTypes.join(","));
|
|
23993
24035
|
if (limit) params.set("limit", limit);
|
|
23994
24036
|
let missions;
|
|
23995
24037
|
const result = await runtime.backend.get(
|
|
@@ -24007,6 +24049,45 @@ async function runManagementCommand({
|
|
|
24007
24049
|
}
|
|
24008
24050
|
return;
|
|
24009
24051
|
}
|
|
24052
|
+
// Board columns are project-scoped (coo:752): two projects in one workspace
|
|
24053
|
+
// may name and order their statuses differently, so the only way to discover
|
|
24054
|
+
// a board's columns is to ask the project that owns them. Read-only —
|
|
24055
|
+
// status definitions are edited in project settings.
|
|
24056
|
+
case "statuses": {
|
|
24057
|
+
const sub = parsed.positional[0];
|
|
24058
|
+
if (sub !== "list") {
|
|
24059
|
+
throw new CliError({
|
|
24060
|
+
message: "Usage: ovld statuses list --project-id <id|slug|name> [--json]"
|
|
24061
|
+
});
|
|
24062
|
+
}
|
|
24063
|
+
const projectRef = flagValue(parsed.flags, "--project-id");
|
|
24064
|
+
if (!projectRef) {
|
|
24065
|
+
throw new CliError({
|
|
24066
|
+
message: "Missing --project-id (accepts a project id, slug, or name)"
|
|
24067
|
+
});
|
|
24068
|
+
}
|
|
24069
|
+
const project = await resolveProjectByIdOrName({
|
|
24070
|
+
backend: runtime.backend,
|
|
24071
|
+
projectRef
|
|
24072
|
+
});
|
|
24073
|
+
const statuses = await runtime.backend.get(
|
|
24074
|
+
`/api/projects/${encodeURIComponent(project.id)}/statuses`
|
|
24075
|
+
);
|
|
24076
|
+
if (json) printJson({ projectId: project.id, statuses });
|
|
24077
|
+
else {
|
|
24078
|
+
for (const status of statuses) {
|
|
24079
|
+
const record = asRecord5(status);
|
|
24080
|
+
const flags = [
|
|
24081
|
+
record.isDefault === true ? "default" : null,
|
|
24082
|
+
record.isTerminal === true ? "terminal" : null
|
|
24083
|
+
].filter(Boolean).join(",");
|
|
24084
|
+
console.log(
|
|
24085
|
+
`${record.position ?? ""} ${record.key ?? ""} ${record.name ?? ""} ${record.type ?? ""} ${flags}`
|
|
24086
|
+
);
|
|
24087
|
+
}
|
|
24088
|
+
}
|
|
24089
|
+
return;
|
|
24090
|
+
}
|
|
24010
24091
|
case "requests": {
|
|
24011
24092
|
const sub = parsed.positional[0];
|
|
24012
24093
|
if (!sub) {
|
|
@@ -24738,6 +24819,7 @@ var COMMAND_FLAGS = {
|
|
|
24738
24819
|
"--no-start"
|
|
24739
24820
|
],
|
|
24740
24821
|
missions: ["--status", "--query", "--project-id", "--limit"],
|
|
24822
|
+
statuses: ["--project-id"],
|
|
24741
24823
|
requests: ["--mission-id", "--objective-id", "--revision", "--decision", "--text"],
|
|
24742
24824
|
inputs: ["--mission-id", "--objective-id", "--channel-id", "--body", "--kind"],
|
|
24743
24825
|
mission: [],
|
|
@@ -24857,6 +24939,13 @@ Missions:
|
|
|
24857
24939
|
${primaryCommand} prompt "<objective>" [--json]
|
|
24858
24940
|
${primaryCommand} attach <missionId> [agent] [--json]
|
|
24859
24941
|
${primaryCommand} missions list [--status <csv>] [--project-id <id>] [--json]
|
|
24942
|
+
--status filters status TYPES
|
|
24943
|
+
(draft,execute,review,complete,blocked,cancelled),
|
|
24944
|
+
not the project-defined status names on a board
|
|
24945
|
+
${primaryCommand} statuses list --project-id <id|slug|name> [--json]
|
|
24946
|
+
List one project's board columns (key, name, type,
|
|
24947
|
+
position, default/terminal). Statuses are defined
|
|
24948
|
+
per project, so they vary between projects.
|
|
24860
24949
|
${primaryCommand} mission context|events|deliveries|artifacts|rationales <missionId> [--json]
|
|
24861
24950
|
${primaryCommand} requests [--mission-id <id>] [--objective-id <id>] [--json]
|
|
24862
24951
|
List open and recent agent decisions
|
|
@@ -24886,7 +24975,8 @@ Protocol (JSON output by default):
|
|
|
24886
24975
|
${primaryCommand} protocol heartbeat --mission-id <id> --session-key <key>
|
|
24887
24976
|
${primaryCommand} protocol ask --mission-id <id> --session-key <key> --question "..."
|
|
24888
24977
|
${primaryCommand} protocol deliver --mission-id <id> --session-key <key> --summary "..."
|
|
24889
|
-
${primaryCommand} protocol search-missions --query "<text>" --status
|
|
24978
|
+
${primaryCommand} protocol search-missions --query "<text>" --status execute,review
|
|
24979
|
+
${primaryCommand} protocol statuses --project-id <id|slug|name>
|
|
24890
24980
|
${primaryCommand} protocol load-context --mission-id <id>
|
|
24891
24981
|
${primaryCommand} protocol help
|
|
24892
24982
|
|
|
@@ -24939,6 +25029,7 @@ var KNOWN_COMMANDS = /* @__PURE__ */ new Set([
|
|
|
24939
25029
|
"resume",
|
|
24940
25030
|
"runner",
|
|
24941
25031
|
"missions",
|
|
25032
|
+
"statuses",
|
|
24942
25033
|
"requests",
|
|
24943
25034
|
"inputs",
|
|
24944
25035
|
"inbox",
|