@nerdvana/parism 0.2.0 → 0.3.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.
Files changed (81) hide show
  1. package/README.md +9 -1
  2. package/dist/config/loader.d.ts.map +1 -1
  3. package/dist/config/loader.js +12 -8
  4. package/dist/config/loader.js.map +1 -1
  5. package/dist/engine/guard.d.ts.map +1 -1
  6. package/dist/engine/guard.js +4 -2
  7. package/dist/engine/guard.js.map +1 -1
  8. package/dist/parsers/compact.d.ts.map +1 -1
  9. package/dist/parsers/compact.js +12 -1
  10. package/dist/parsers/compact.js.map +1 -1
  11. package/dist/parsers/devops/helm.d.ts +27 -0
  12. package/dist/parsers/devops/helm.d.ts.map +1 -0
  13. package/dist/parsers/devops/helm.js +41 -0
  14. package/dist/parsers/devops/helm.js.map +1 -0
  15. package/dist/parsers/devops/index.d.ts +2 -0
  16. package/dist/parsers/devops/index.d.ts.map +1 -1
  17. package/dist/parsers/devops/index.js +2 -0
  18. package/dist/parsers/devops/index.js.map +1 -1
  19. package/dist/parsers/devops/terraform.d.ts +22 -0
  20. package/dist/parsers/devops/terraform.d.ts.map +1 -0
  21. package/dist/parsers/devops/terraform.js +30 -0
  22. package/dist/parsers/devops/terraform.js.map +1 -0
  23. package/dist/parsers/fs/ls.js +1 -1
  24. package/dist/parsers/fs/ls.js.map +1 -1
  25. package/dist/parsers/fs/stat.d.ts.map +1 -1
  26. package/dist/parsers/fs/stat.js +33 -0
  27. package/dist/parsers/fs/stat.js.map +1 -1
  28. package/dist/parsers/git/diff.d.ts +23 -2
  29. package/dist/parsers/git/diff.d.ts.map +1 -1
  30. package/dist/parsers/git/diff.js +57 -2
  31. package/dist/parsers/git/diff.js.map +1 -1
  32. package/dist/parsers/index.d.ts.map +1 -1
  33. package/dist/parsers/index.js +13 -2
  34. package/dist/parsers/index.js.map +1 -1
  35. package/dist/parsers/network/netstat.d.ts.map +1 -1
  36. package/dist/parsers/network/netstat.js +7 -2
  37. package/dist/parsers/network/netstat.js.map +1 -1
  38. package/dist/parsers/packages/cargo.d.ts +23 -0
  39. package/dist/parsers/packages/cargo.d.ts.map +1 -0
  40. package/dist/parsers/packages/cargo.js +41 -0
  41. package/dist/parsers/packages/cargo.js.map +1 -0
  42. package/dist/parsers/packages/index.d.ts +3 -0
  43. package/dist/parsers/packages/index.d.ts.map +1 -0
  44. package/dist/parsers/packages/index.js +3 -0
  45. package/dist/parsers/packages/index.js.map +1 -0
  46. package/dist/parsers/packages/npm.d.ts +23 -0
  47. package/dist/parsers/packages/npm.d.ts.map +1 -0
  48. package/dist/parsers/packages/npm.js +38 -0
  49. package/dist/parsers/packages/npm.js.map +1 -0
  50. package/dist/parsers/registry.d.ts +5 -2
  51. package/dist/parsers/registry.d.ts.map +1 -1
  52. package/dist/parsers/registry.js.map +1 -1
  53. package/dist/parsers/system/apt.d.ts +24 -0
  54. package/dist/parsers/system/apt.d.ts.map +1 -0
  55. package/dist/parsers/system/apt.js +38 -0
  56. package/dist/parsers/system/apt.js.map +1 -0
  57. package/dist/parsers/system/brew.d.ts +22 -0
  58. package/dist/parsers/system/brew.d.ts.map +1 -0
  59. package/dist/parsers/system/brew.js +31 -0
  60. package/dist/parsers/system/brew.js.map +1 -0
  61. package/dist/parsers/system/index.d.ts +4 -0
  62. package/dist/parsers/system/index.d.ts.map +1 -1
  63. package/dist/parsers/system/index.js +4 -0
  64. package/dist/parsers/system/index.js.map +1 -1
  65. package/dist/parsers/system/journalctl.d.ts +27 -0
  66. package/dist/parsers/system/journalctl.d.ts.map +1 -0
  67. package/dist/parsers/system/journalctl.js +57 -0
  68. package/dist/parsers/system/journalctl.js.map +1 -0
  69. package/dist/parsers/system/systemctl.d.ts +27 -0
  70. package/dist/parsers/system/systemctl.d.ts.map +1 -0
  71. package/dist/parsers/system/systemctl.js +50 -0
  72. package/dist/parsers/system/systemctl.js.map +1 -0
  73. package/dist/parsers/windows/tasklist.d.ts.map +1 -1
  74. package/dist/parsers/windows/tasklist.js +0 -2
  75. package/dist/parsers/windows/tasklist.js.map +1 -1
  76. package/dist/server.d.ts +1 -1
  77. package/dist/server.d.ts.map +1 -1
  78. package/dist/server.js +35 -10
  79. package/dist/server.js.map +1 -1
  80. package/package.json +7 -1
  81. package/prism.config.json +4 -2
package/dist/server.js CHANGED
@@ -6,7 +6,7 @@ import { defaultRegistry } from "./parsers/index.js";
6
6
  import { paginateLines } from "./engine/paginator.js";
7
7
  import { toCompact } from "./parsers/compact.js";
8
8
  import { tryParseNativeJson } from "./parsers/json-passthrough.js";
9
- export const PACKAGE_VERSION = "0.2.0";
9
+ export const PACKAGE_VERSION = "0.3.0";
10
10
  /**
11
11
  * Guard 차단 시 반환하는 에러 봉투를 생성한다.
12
12
  */
@@ -38,11 +38,15 @@ export async function buildRunResult(cmd, args, cwd, config, format = "json") {
38
38
  throw err;
39
39
  }
40
40
  const envelope = await execute(cmd, args, cwd, config.guard.env_secret_patterns, config.guard.timeout_ms, config.guard.max_output_bytes);
41
- let parsed = defaultRegistry.parse(cmd, args, envelope.stdout.raw, { maxItems: config.guard.max_items, format });
41
+ const parseFormat = format === "json-no-raw" ? "json" : format;
42
+ let parsed = defaultRegistry.parse(cmd, args, envelope.stdout.raw, { maxItems: config.guard.max_items, format: parseFormat });
42
43
  if (parsed == null)
43
44
  parsed = tryParseNativeJson(envelope.stdout.raw);
44
- const final = format === "compact" ? toCompact(parsed) : parsed;
45
- const enriched = { ...envelope, stdout: { ...envelope.stdout, parsed: final } };
45
+ const final = parseFormat === "compact" ? toCompact(parsed) : parsed;
46
+ const stdout = format === "json-no-raw"
47
+ ? { raw: "", parsed: final }
48
+ : { ...envelope.stdout, parsed: final };
49
+ const enriched = { ...envelope, stdout };
46
50
  return JSON.stringify(enriched, null, 2);
47
51
  }
48
52
  /**
@@ -69,22 +73,43 @@ export async function buildPagedResult(cmd, args, cwd, page, pageSize, config) {
69
73
  };
70
74
  return JSON.stringify(enriched, null, 2);
71
75
  }
76
+ const MCP_INSTRUCTIONS = `Parism: Structured shell output for AI agents.
77
+
78
+ When to use Parism:
79
+ - File listing (ls, find): Get entries[] with name, type, size, permissions — no raw parsing.
80
+ - Git state (status, log, diff): Structured branch, modified[], commits[], hunks — code review ready.
81
+ - Process/container (ps, docker ps): Structured processes[]/containers[] — filter by PID, status.
82
+ - Disk/network (df, netstat): Structured filesystems[]/connections[] — no column alignment guess.
83
+ - System (systemctl list-units, journalctl -o short-iso): units[]/entries[] — service status, logs.
84
+ - DevOps (helm list, terraform plan): releases[]/summary — deployments, plan changes.
85
+ - Packages (apt list, brew list, npm list, cargo tree): packages[]/dependencies[]/crates[].
86
+ - When output has spaces in filenames or OS-specific format: Parism parses deterministically, CFR 0%.
87
+ - When you need to count, filter, or compare: Use parsed.entries.length, parsed.files_changed, etc.
88
+
89
+ When NOT to use: Simple one-line output (pwd, echo), or when you need pipe/redirect (Guard blocks).
90
+
91
+ Tools:
92
+ - run: Execute command, get structured JSON. format: json|compact|json-no-raw.
93
+ - run_paged: Paginated stdout for large output (ps aux, find, grep -r). parsed is always null.
94
+
95
+ Usage:
96
+ 1. Prefer run when output is small. Use format=compact for token savings.
97
+ 2. For large output: run_paged(page=0) first, check page_info.total_lines, then fetch needed pages.
98
+ 3. Guard blocks disallowed commands. Check result.ok and result.guard_error on failure.
99
+ 4. stdout.parsed has structured data; stdout.raw is fallback. Schema varies by command.`;
72
100
  /**
73
101
  * MCP 서버를 생성하고 `run` 도구를 등록한다.
74
102
  */
75
103
  export function createServer(config) {
76
- const server = new McpServer({
77
- name: "parism",
78
- version: PACKAGE_VERSION,
79
- });
104
+ const server = new McpServer({ name: "parism", version: PACKAGE_VERSION }, { instructions: MCP_INSTRUCTIONS });
80
105
  server.tool("run", "Execute a shell command and receive structured output. " +
81
106
  "All commands are filtered through an execution guard (whitelist + injection prevention). " +
82
107
  "Use format='compact' for token-efficient columnar output.", {
83
108
  cmd: z.string().describe("Command name (e.g. 'ls', 'git')"),
84
109
  args: z.array(z.string()).default([]).describe("Command arguments"),
85
110
  cwd: z.string().default(process.cwd()).describe("Working directory"),
86
- format: z.enum(["json", "compact"]).default("json")
87
- .describe("Output format. 'compact' uses columnar schema+rows for lower token cost"),
111
+ format: z.enum(["json", "compact", "json-no-raw"]).default("json")
112
+ .describe("Output format. 'compact'=columnar. 'json-no-raw'=omit raw for token savings."),
88
113
  }, async ({ cmd, args, cwd, format }) => {
89
114
  const result = await buildRunResult(cmd, args, cwd, config, format);
90
115
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAmB,yCAAyC,CAAC;AAEjF,OAAO,EAAE,CAAC,EAAE,MAA2B,KAAK,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAqB,sBAAsB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAa,oBAAoB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAe,uBAAuB,CAAC;AAG/D,OAAO,EAAE,SAAS,EAAE,MAAmB,sBAAsB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAS,+BAA+B,CAAC;AAEtE,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC;AAEvC;;GAEG;AACH,SAAS,uBAAuB,CAC9B,GAAW,EAAE,IAAc,EAAE,GAAW,EAAE,GAAe;IAEzD,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,EAAE,EAAW,KAAK;QAClB,QAAQ,EAAK,CAAC,CAAC;QACf,GAAG;QACH,IAAI;QACJ,GAAG;QACH,WAAW,EAAE,CAAC;QACd,MAAM,EAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;QACtC,MAAM,EAAO,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;QAC/C,IAAI,EAAS,IAAI;QACjB,WAAW,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE;KAC1D,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAc,EACd,IAAgB,EAChB,GAAc,EACd,MAAmB,EACnB,SAAuB,MAAM;IAE7B,IAAI,CAAC;QACH,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,UAAU;YAAE,OAAO,uBAAuB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACnF,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAC5B,GAAG,EAAE,IAAI,EAAE,GAAG,EACd,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAChC,MAAM,CAAC,KAAK,CAAC,UAAU,EACvB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC9B,CAAC;IACF,IAAI,MAAM,GAAO,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IACrH,IAAI,MAAM,IAAI,IAAI;QAAE,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrE,MAAM,KAAK,GAAM,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACnE,MAAM,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;IAChF,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAgB,EAChB,IAAkB,EAClB,GAAgB,EAChB,IAAgB,EAChB,QAAgB,EAChB,MAAqB;IAErB,IAAI,CAAC;QACH,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,UAAU;YAAE,OAAO,uBAAuB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACnF,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,4CAA4C;IAC5C,MAAM,QAAQ,GAAiB,MAAM,OAAO,CAC1C,GAAG,EAAE,IAAI,EAAE,GAAG,EACd,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAChC,MAAM,CAAC,KAAK,CAAC,UAAU,EACvB,CAAC,CACF,CAAC;IACF,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAK,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAClF,MAAM,QAAQ,GAAiB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACjF,MAAM,QAAQ,GAAiB;QAC7B,GAAG,QAAQ;QACX,MAAM,EAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;QAC1C,SAAS;KACV,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAmB;IAC9C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAK,QAAQ;QACjB,OAAO,EAAE,eAAe;KACzB,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CACT,KAAK,EACL,yDAAyD;QACzD,2FAA2F;QAC3F,2DAA2D,EAC3D;QACE,GAAG,EAAK,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QAC9D,IAAI,EAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACrE,GAAG,EAAK,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACvE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;aAC1C,QAAQ,CAAC,yEAAyE,CAAC;KAC7F,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACpE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;SACnD,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,WAAW,EACX,uDAAuD;QACvD,mEAAmE;QACnE,iEAAiE,EACjE;QACE,GAAG,EAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC9C,IAAI,EAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACxE,GAAG,EAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC1E,IAAI,EAAO,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QAC9E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC;aAC9D,QAAQ,CAAC,gBAAgB,CAAC;KACvC,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC/E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAChE,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nerdvana/parism",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Structured shell output wrapper for AI agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -14,6 +14,7 @@
14
14
  "test": "vitest run",
15
15
  "test:watch": "vitest",
16
16
  "test:coverage": "vitest run --coverage",
17
+ "lint": "eslint src tests",
17
18
  "benchmark": "npx tsx benchmarks/index.ts"
18
19
  },
19
20
  "dependencies": {
@@ -21,10 +22,15 @@
21
22
  "zod": "^3.24.0"
22
23
  },
23
24
  "devDependencies": {
25
+ "@eslint/js": "^10.0.1",
24
26
  "@types/node": "^22.0.0",
27
+ "@typescript-eslint/eslint-plugin": "^8.56.1",
28
+ "@typescript-eslint/parser": "^8.56.1",
25
29
  "@vitest/coverage-v8": "^3.0.0",
30
+ "eslint": "^10.0.3",
26
31
  "gpt-tokenizer": "^3.4.0",
27
32
  "typescript": "^5.7.0",
33
+ "typescript-eslint": "^8.56.1",
28
34
  "vitest": "^3.0.0"
29
35
  },
30
36
  "files": [
package/prism.config.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "guard": {
3
3
  "allowed_commands": [
4
4
  "ls", "find", "stat", "du", "df", "tree",
5
- "ps", "kill",
5
+ "ps",
6
6
  "ping", "curl", "netstat", "lsof", "ss", "dig",
7
7
  "grep", "wc", "head", "tail", "cat",
8
8
  "git",
@@ -11,7 +11,9 @@
11
11
  "echo", "date", "hostname",
12
12
  "npm", "node", "npx",
13
13
  "dir", "tasklist", "ipconfig", "systeminfo",
14
- "kubectl", "docker", "gh"
14
+ "kubectl", "docker", "gh",
15
+ "terraform", "helm", "cargo",
16
+ "systemctl", "journalctl", "apt", "brew"
15
17
  ],
16
18
  "allowed_paths": [],
17
19
  "timeout_ms": 10000,