overlord-cli 0.2610050824.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,4 +1,4 @@
1
- contractVersion: "152"
1
+ contractVersion: "153"
2
2
  componentType: connector
3
3
  componentKey: antigravity
4
4
  label: "Antigravity Connector"
@@ -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,4 +1,4 @@
1
- contractVersion: "152"
1
+ contractVersion: "153"
2
2
  componentType: connector
3
3
  componentKey: claude
4
4
  label: "Claude Code Connector"
@@ -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,4 +1,4 @@
1
- contractVersion: "152"
1
+ contractVersion: "153"
2
2
  componentType: connector
3
3
  componentKey: codex
4
4
  label: "Codex Connector"
@@ -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",
@@ -1,4 +1,4 @@
1
- contractVersion: "152"
1
+ contractVersion: "153"
2
2
  componentType: connector
3
3
  componentKey: cursor
4
4
  label: "Cursor Connector"
@@ -1,4 +1,4 @@
1
- contractVersion: "152"
1
+ contractVersion: "153"
2
2
  componentType: connector
3
3
  componentKey: opencode
4
4
  label: "OpenCode Connector"
@@ -1,4 +1,4 @@
1
- contractVersion: "152"
1
+ contractVersion: "153"
2
2
  componentType: connector
3
3
  componentKey: pi
4
4
  label: "PI Connector"
@@ -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;
@@ -155,6 +155,7 @@ properties:
155
155
  enum:
156
156
  - database-extension
157
157
  - custom-harness
158
+ - account-connection-provider
158
159
  - open-vocabulary-value
159
160
  uniqueItems: true
160
161
 
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();
@@ -37554,7 +37562,9 @@ function lexicalProjectRoot({
37554
37562
  let best = workingDirectory;
37555
37563
  let bestScore = -1;
37556
37564
  for (const candidate of candidates) {
37557
- const score = pathHints.filter((hint) => isLexicallyInside({ parent: candidate, child: hint })).length;
37565
+ const score = pathHints.filter(
37566
+ (hint) => isLexicallyInside({ parent: candidate, child: hint })
37567
+ ).length;
37558
37568
  if (score > bestScore) {
37559
37569
  best = candidate;
37560
37570
  bestScore = score;
@@ -39589,8 +39599,16 @@ search:
39589
39599
  --entity-types <csv> V3 only: mission,objective,delivery (default all)
39590
39600
  --objective-states <csv> V3 only: restrict matching objective states
39591
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
39592
39608
  Returns:
39593
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.
39594
39612
 
39595
39613
  statuses:
39596
39614
  Purpose: