nexarch 0.1.29 → 0.1.30

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.
@@ -4,7 +4,7 @@ import { join } from "path";
4
4
  import process from "process";
5
5
  import { requireCredentials } from "../lib/credentials.js";
6
6
  import { callMcpTool, mcpInitialize, mcpListTools } from "../lib/mcp.js";
7
- const CLI_VERSION = "0.1.29";
7
+ const CLI_VERSION = "0.1.30";
8
8
  const AGENT_ENTITY_TYPE = "agent";
9
9
  const TECH_COMPONENT_ENTITY_TYPE = "technology_component";
10
10
  function parseFlag(args, flag) {
@@ -0,0 +1,52 @@
1
+ import process from "process";
2
+ import { requireCredentials } from "../lib/credentials.js";
3
+ import { callMcpTool } from "../lib/mcp.js";
4
+ function parseFlag(args, flag) {
5
+ return args.includes(flag);
6
+ }
7
+ function parseOptionValue(args, option) {
8
+ const idx = args.indexOf(option);
9
+ if (idx === -1)
10
+ return null;
11
+ const value = args[idx + 1];
12
+ if (!value || value.startsWith("--"))
13
+ return null;
14
+ return value;
15
+ }
16
+ function parseToolText(result) {
17
+ const text = result.content?.[0]?.text ?? "{}";
18
+ return JSON.parse(text);
19
+ }
20
+ export async function resolveNames(args) {
21
+ const asJson = parseFlag(args, "--json");
22
+ const namesRaw = parseOptionValue(args, "--names");
23
+ if (!namesRaw) {
24
+ console.error("error: --names <comma-separated list> is required");
25
+ process.exit(1);
26
+ }
27
+ const names = namesRaw
28
+ .split(",")
29
+ .map((n) => n.trim())
30
+ .filter(Boolean);
31
+ if (names.length === 0) {
32
+ console.error("error: --names must contain at least one name");
33
+ process.exit(1);
34
+ }
35
+ const creds = requireCredentials();
36
+ const mcpOpts = { companyId: creds.companyId };
37
+ const raw = await callMcpTool("nexarch_resolve_reference", { names, companyId: creds.companyId }, mcpOpts);
38
+ const result = parseToolText(raw);
39
+ if (asJson) {
40
+ process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
41
+ return;
42
+ }
43
+ for (const entry of result.resolved ?? []) {
44
+ if (entry.resolved) {
45
+ console.log(`✓ ${entry.input} → ${entry.canonicalExternalRef} (${entry.entityTypeCode}${entry.entitySubtypeCode ? `/${entry.entitySubtypeCode}` : ""}) "${entry.canonicalName}"`);
46
+ }
47
+ else {
48
+ console.log(`✗ ${entry.input} — not found in reference library`);
49
+ }
50
+ }
51
+ console.log(`\n${result.totalResolved}/${result.totalRequested} resolved`);
52
+ }
package/dist/index.js CHANGED
@@ -14,6 +14,7 @@ import { initProject } from "./commands/init-project.js";
14
14
  import { updateEntity } from "./commands/update-entity.js";
15
15
  import { addRelationship } from "./commands/add-relationship.js";
16
16
  import { registerAlias } from "./commands/register-alias.js";
17
+ import { resolveNames } from "./commands/resolve-names.js";
17
18
  const [, , command, ...args] = process.argv;
18
19
  const commands = {
19
20
  login,
@@ -28,6 +29,7 @@ const commands = {
28
29
  "update-entity": updateEntity,
29
30
  "add-relationship": addRelationship,
30
31
  "register-alias": registerAlias,
32
+ "resolve-names": resolveNames,
31
33
  };
32
34
  async function main() {
33
35
  if (command === "agent") {
@@ -114,6 +116,13 @@ Usage:
114
116
  --subtype <code>
115
117
  --description <text>
116
118
  --json
119
+ nexarch resolve-names
120
+ Look up one or more raw names (package names, platform
121
+ names) against the global reference library and return
122
+ their canonical external keys. Useful for gap-check
123
+ results before calling add-relationship.
124
+ Options: --names <csv> (required, e.g. "vercel,neon")
125
+ --json
117
126
  `);
118
127
  process.exit(command ? 1 : 0);
119
128
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nexarch",
3
- "version": "0.1.29",
3
+ "version": "0.1.30",
4
4
  "description": "Connect AI coding tools to your Nexarch architecture workspace",
5
5
  "keywords": [
6
6
  "nexarch",