overlord-cli 0.2610051433.0 → 0.2610051609.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.
@@ -1 +1 @@
1
- 0.3.49
1
+ 0.3.50
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://antigravity.google/schemas/v1/plugin.json",
3
3
  "name": "overlord",
4
- "version": "0.3.49",
4
+ "version": "0.3.50",
5
5
  "description": "Chat-driven access to Overlord mission protocol workflows through skills and MCP.",
6
6
  "author": {
7
7
  "name": "Cooperativ",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overlord",
3
- "version": "0.3.49",
3
+ "version": "0.3.50",
4
4
  "description": "Overlord mission protocol workflow for Claude Code — attach/update/ask/deliver, slash commands, and hook-driven activity capture.",
5
5
  "author": {
6
6
  "name": "Cooperativ",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overlord",
3
- "version": "0.3.49",
3
+ "version": "0.3.50",
4
4
  "description": "Chat-driven access to Overlord mission protocol workflows with hook-driven activity capture.",
5
5
  "author": {
6
6
  "name": "Cooperativ",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overlord",
3
- "version": "0.3.49",
3
+ "version": "0.3.50",
4
4
  "description": "Overlord mission protocol workflow for Cursor — attach/update/ask/deliver, slash commands, MCP bridge, and follow-up capture.",
5
5
  "author": {
6
6
  "name": "Cooperativ",
@@ -210,9 +210,15 @@ const tools = [
210
210
  name: 'overlord_search_missions',
211
211
  title: 'Search Overlord missions',
212
212
  description:
213
- "Search mission anchors with their matching objectives and deliveries across authorized workspaces. An objective displayId can be passed directly to overlord_load_mission_context; matches are matched-only, not the full objective list. Artifacts are not indexed. Use absolute ISO from/to bounds (no relative dates or implicit window), inspect workspaceCounts, entityCounts, and truncatedCandidates before claiming completeness, and treat appliedFilters.mode 'fallback' as a recency listing. Compact detail is default; request full for child snippets and metadata.",
213
+ "Search mission anchors with their matching objectives and deliveries across authorized workspaces. An objective displayId can be passed directly to overlord_load_mission_context; matches are matched-only, not the full objective list. Artifacts are not indexed. Use absolute ISO from/to bounds (no relative dates or implicit window), inspect workspaceCounts, entityCounts, and truncatedCandidates before claiming completeness, and treat appliedFilters.mode 'fallback' as a recency listing. Compact detail is default; request full for child snippets and metadata. Ranked results never prove absence: to check an exact token such as a canonical kb-feature: Knowledgebase Feature reference, pass reference with projectId (only workspaceId, limit 1-100 and cursor may accompany it) and follow nextCursor until complete is true.",
214
214
  inputSchema: objectSchema({
215
215
  query: stringProperty('Search query text.'),
216
+ reference: stringProperty(
217
+ 'Exact-reference mode: case-sensitive whole token (8-512 characters, no whitespace) in live objective text. Requires projectId; cannot be combined with ranked filters. Returns { results (with statusType and matching objectives), nextCursor, complete }.'
218
+ ),
219
+ cursor: stringProperty(
220
+ 'Exact-reference mode only: nextCursor from the previous page for the same reference and projectId.'
221
+ ),
216
222
  status: stringProperty(
217
223
  '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.'
218
224
  ),
@@ -829,6 +835,43 @@ async function callOverlordTool(name, args) {
829
835
  });
830
836
  }
831
837
  if (name === 'overlord_search_missions') {
838
+ const reference = optionalString(args, 'reference');
839
+ if (reference) {
840
+ // Exact-reference mode: ranked filters are forwarded so Protocol rejects them.
841
+ const ranked = {};
842
+ for (const [key, flag] of [
843
+ ['query', 'query'],
844
+ ['status', 'status'],
845
+ ['resourceKey', 'resource-key'],
846
+ ['dateField', 'date-field'],
847
+ ['from', 'from'],
848
+ ['to', 'to'],
849
+ ['entityTypes', 'entity-types'],
850
+ ['objectiveStates', 'objective-states']
851
+ ]) {
852
+ if (optionalString(args, key)) ranked[flag] = requiredString(args, key);
853
+ }
854
+ if (typeof args.matchesPerResult === 'number') {
855
+ ranked['matches-per-result'] = String(args.matchesPerResult);
856
+ }
857
+ return runProtocol('search', {
858
+ reference,
859
+ ...(optionalString(args, 'projectId')
860
+ ? { 'project-id': requiredString(args, 'projectId') }
861
+ : {}),
862
+ ...(optionalString(args, 'workspaceId')
863
+ ? { 'workspace-id': requiredString(args, 'workspaceId') }
864
+ : {}),
865
+ ...(optionalString(args, 'cursor') ? { cursor: requiredString(args, 'cursor') } : {}),
866
+ ...(typeof args.limit === 'number' && Number.isFinite(args.limit)
867
+ ? { limit: String(Math.trunc(args.limit)) }
868
+ : {}),
869
+ ...ranked
870
+ });
871
+ }
872
+ if (optionalString(args, 'cursor')) {
873
+ throw new Error('cursor applies only to an exact reference search');
874
+ }
832
875
  const detail = optionalString(args, 'detail') || 'compact';
833
876
  if (detail !== 'compact' && detail !== 'full') {
834
877
  throw new Error("detail must be 'compact' or 'full'");
@@ -1228,7 +1271,7 @@ process.stdin.on('data', async chunk => {
1228
1271
  result: {
1229
1272
  protocolVersion: PROTOCOL_VERSION,
1230
1273
  capabilities: { tools: { listChanged: false } },
1231
- serverInfo: { name: 'overlord-__OVERLORD_ADAPTER_KEY__', version: '0.3.49' }
1274
+ serverInfo: { name: 'overlord-__OVERLORD_ADAPTER_KEY__', version: '0.3.50' }
1232
1275
  }
1233
1276
  });
1234
1277
  continue;
package/dist/index.js CHANGED
@@ -8065,6 +8065,13 @@ var init_launch_variables = __esm({
8065
8065
  }
8066
8066
  });
8067
8067
 
8068
+ // ../packages/contract/dist/mission-reference.js
8069
+ var init_mission_reference = __esm({
8070
+ "../packages/contract/dist/mission-reference.js"() {
8071
+ "use strict";
8072
+ }
8073
+ });
8074
+
8068
8075
  // ../packages/contract/dist/mission-search.js
8069
8076
  var init_mission_search = __esm({
8070
8077
  "../packages/contract/dist/mission-search.js"() {
@@ -8185,6 +8192,7 @@ var init_dist2 = __esm({
8185
8192
  init_agent_launch_flags();
8186
8193
  init_chat();
8187
8194
  init_launch_variables();
8195
+ init_mission_reference();
8188
8196
  init_mission_search();
8189
8197
  init_notifications();
8190
8198
  init_objective_ref();
@@ -39591,8 +39599,16 @@ search:
39591
39599
  --entity-types <csv> V3 only: mission,objective,delivery (default all)
39592
39600
  --objective-states <csv> V3 only: restrict matching objective states
39593
39601
  --matches-per-result <n> V3 only: child matches per mission (default 3, max 10)
39602
+ --reference <token> Exact-reference mode instead of ranked search: every
39603
+ mission in --project-id (required) whose live objective
39604
+ text contains this case-sensitive whole token, e.g. a
39605
+ kb-feature: Knowledgebase Feature reference. Accepts only
39606
+ --workspace-id, --limit (1-100, default 50) and --cursor.
39607
+ --cursor <cursor> Exact-reference mode: nextCursor from the previous page
39594
39608
  Returns:
39595
39609
  JSON with matching missions (v1) or the versioned search envelope (v2/v3).
39610
+ With --reference: { results, nextCursor, complete }. Only a page with
39611
+ complete: true ends the scan; ranked search never proves absence.
39596
39612
 
39597
39613
  statuses:
39598
39614
  Purpose: