@the-cascade-protocol/cli 0.2.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 (165) hide show
  1. package/.dockerignore +7 -0
  2. package/.eslintrc.json +23 -0
  3. package/.prettierrc +7 -0
  4. package/DOCKER.md +36 -0
  5. package/Dockerfile +18 -0
  6. package/README.md +69 -0
  7. package/dist/commands/capabilities.d.ts +9 -0
  8. package/dist/commands/capabilities.d.ts.map +1 -0
  9. package/dist/commands/capabilities.js +194 -0
  10. package/dist/commands/capabilities.js.map +1 -0
  11. package/dist/commands/conformance.d.ts +15 -0
  12. package/dist/commands/conformance.d.ts.map +1 -0
  13. package/dist/commands/conformance.js +348 -0
  14. package/dist/commands/conformance.js.map +1 -0
  15. package/dist/commands/convert.d.ts +21 -0
  16. package/dist/commands/convert.d.ts.map +1 -0
  17. package/dist/commands/convert.js +134 -0
  18. package/dist/commands/convert.js.map +1 -0
  19. package/dist/commands/pod/export.d.ts +8 -0
  20. package/dist/commands/pod/export.d.ts.map +1 -0
  21. package/dist/commands/pod/export.js +72 -0
  22. package/dist/commands/pod/export.js.map +1 -0
  23. package/dist/commands/pod/helpers.d.ts +79 -0
  24. package/dist/commands/pod/helpers.d.ts.map +1 -0
  25. package/dist/commands/pod/helpers.js +369 -0
  26. package/dist/commands/pod/helpers.js.map +1 -0
  27. package/dist/commands/pod/index.d.ts +20 -0
  28. package/dist/commands/pod/index.d.ts.map +1 -0
  29. package/dist/commands/pod/index.js +29 -0
  30. package/dist/commands/pod/index.js.map +1 -0
  31. package/dist/commands/pod/info.d.ts +9 -0
  32. package/dist/commands/pod/info.d.ts.map +1 -0
  33. package/dist/commands/pod/info.js +196 -0
  34. package/dist/commands/pod/info.js.map +1 -0
  35. package/dist/commands/pod/init.d.ts +9 -0
  36. package/dist/commands/pod/init.d.ts.map +1 -0
  37. package/dist/commands/pod/init.js +251 -0
  38. package/dist/commands/pod/init.js.map +1 -0
  39. package/dist/commands/pod/query.d.ts +9 -0
  40. package/dist/commands/pod/query.d.ts.map +1 -0
  41. package/dist/commands/pod/query.js +169 -0
  42. package/dist/commands/pod/query.js.map +1 -0
  43. package/dist/commands/pod 2.js +1017 -0
  44. package/dist/commands/pod.d.ts +28 -0
  45. package/dist/commands/pod.d.ts 2.map +1 -0
  46. package/dist/commands/pod.d.ts.map +1 -0
  47. package/dist/commands/pod.js +1031 -0
  48. package/dist/commands/pod.js 2.map +1 -0
  49. package/dist/commands/pod.js.map +1 -0
  50. package/dist/commands/serve.d.ts +33 -0
  51. package/dist/commands/serve.d.ts.map +1 -0
  52. package/dist/commands/serve.js +74 -0
  53. package/dist/commands/serve.js.map +1 -0
  54. package/dist/commands/validate.d.ts +18 -0
  55. package/dist/commands/validate.d.ts.map +1 -0
  56. package/dist/commands/validate.js +275 -0
  57. package/dist/commands/validate.js.map +1 -0
  58. package/dist/index.d.ts +19 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +49 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/lib/fhir-converter/cascade-to-fhir.d.ts +17 -0
  63. package/dist/lib/fhir-converter/cascade-to-fhir.d.ts.map +1 -0
  64. package/dist/lib/fhir-converter/cascade-to-fhir.js +358 -0
  65. package/dist/lib/fhir-converter/cascade-to-fhir.js.map +1 -0
  66. package/dist/lib/fhir-converter/converters-clinical.d.ts +29 -0
  67. package/dist/lib/fhir-converter/converters-clinical.d.ts.map +1 -0
  68. package/dist/lib/fhir-converter/converters-clinical.js +391 -0
  69. package/dist/lib/fhir-converter/converters-clinical.js.map +1 -0
  70. package/dist/lib/fhir-converter/converters-demographics.d.ts +20 -0
  71. package/dist/lib/fhir-converter/converters-demographics.d.ts.map +1 -0
  72. package/dist/lib/fhir-converter/converters-demographics.js +242 -0
  73. package/dist/lib/fhir-converter/converters-demographics.js.map +1 -0
  74. package/dist/lib/fhir-converter/fhir-to-cascade.d.ts +17 -0
  75. package/dist/lib/fhir-converter/fhir-to-cascade.d.ts.map +1 -0
  76. package/dist/lib/fhir-converter/fhir-to-cascade.js +63 -0
  77. package/dist/lib/fhir-converter/fhir-to-cascade.js.map +1 -0
  78. package/dist/lib/fhir-converter/index.d.ts +36 -0
  79. package/dist/lib/fhir-converter/index.d.ts.map +1 -0
  80. package/dist/lib/fhir-converter/index.js +187 -0
  81. package/dist/lib/fhir-converter/index.js.map +1 -0
  82. package/dist/lib/fhir-converter/types.d.ts +77 -0
  83. package/dist/lib/fhir-converter/types.d.ts.map +1 -0
  84. package/dist/lib/fhir-converter/types.js +236 -0
  85. package/dist/lib/fhir-converter/types.js.map +1 -0
  86. package/dist/lib/fhir-converter.d.ts +62 -0
  87. package/dist/lib/fhir-converter.d.ts.map +1 -0
  88. package/dist/lib/fhir-converter.js +1474 -0
  89. package/dist/lib/fhir-converter.js.map +1 -0
  90. package/dist/lib/mcp/audit.d.ts +24 -0
  91. package/dist/lib/mcp/audit.d.ts.map +1 -0
  92. package/dist/lib/mcp/audit.js +85 -0
  93. package/dist/lib/mcp/audit.js.map +1 -0
  94. package/dist/lib/mcp/server.d.ts +38 -0
  95. package/dist/lib/mcp/server.d.ts.map +1 -0
  96. package/dist/lib/mcp/server.js +172 -0
  97. package/dist/lib/mcp/server.js.map +1 -0
  98. package/dist/lib/mcp/tools.d.ts +47 -0
  99. package/dist/lib/mcp/tools.d.ts.map +1 -0
  100. package/dist/lib/mcp/tools.js +547 -0
  101. package/dist/lib/mcp/tools.js.map +1 -0
  102. package/dist/lib/output.d.ts +26 -0
  103. package/dist/lib/output.d.ts.map +1 -0
  104. package/dist/lib/output.js +64 -0
  105. package/dist/lib/output.js.map +1 -0
  106. package/dist/lib/shacl-validator.d.ts +53 -0
  107. package/dist/lib/shacl-validator.d.ts.map +1 -0
  108. package/dist/lib/shacl-validator.js +245 -0
  109. package/dist/lib/shacl-validator.js.map +1 -0
  110. package/dist/lib/turtle-parser.d.ts +64 -0
  111. package/dist/lib/turtle-parser.d.ts.map +1 -0
  112. package/dist/lib/turtle-parser.js +236 -0
  113. package/dist/lib/turtle-parser.js.map +1 -0
  114. package/dist/shapes/checkup.shapes.ttl +1459 -0
  115. package/dist/shapes/clinical.shapes.ttl +1350 -0
  116. package/dist/shapes/clinical.ttl +1369 -0
  117. package/dist/shapes/core.shapes.ttl +450 -0
  118. package/dist/shapes/core.ttl +603 -0
  119. package/dist/shapes/coverage.shapes.ttl +214 -0
  120. package/dist/shapes/coverage.ttl +182 -0
  121. package/dist/shapes/health.shapes.ttl +697 -0
  122. package/dist/shapes/health.ttl +859 -0
  123. package/dist/shapes/pots.shapes.ttl +481 -0
  124. package/package.json +54 -0
  125. package/src/commands/capabilities.ts +235 -0
  126. package/src/commands/conformance.ts +447 -0
  127. package/src/commands/convert.ts +164 -0
  128. package/src/commands/pod/export.ts +85 -0
  129. package/src/commands/pod/helpers.ts +449 -0
  130. package/src/commands/pod/index.ts +32 -0
  131. package/src/commands/pod/info.ts +239 -0
  132. package/src/commands/pod/init.ts +273 -0
  133. package/src/commands/pod/query.ts +224 -0
  134. package/src/commands/serve.ts +92 -0
  135. package/src/commands/validate.ts +303 -0
  136. package/src/index.ts +58 -0
  137. package/src/lib/fhir-converter/cascade-to-fhir.ts +369 -0
  138. package/src/lib/fhir-converter/converters-clinical.ts +446 -0
  139. package/src/lib/fhir-converter/converters-demographics.ts +270 -0
  140. package/src/lib/fhir-converter/fhir-to-cascade.ts +82 -0
  141. package/src/lib/fhir-converter/index.ts +215 -0
  142. package/src/lib/fhir-converter/types.ts +318 -0
  143. package/src/lib/mcp/audit.ts +107 -0
  144. package/src/lib/mcp/server.ts +192 -0
  145. package/src/lib/mcp/tools.ts +668 -0
  146. package/src/lib/output.ts +76 -0
  147. package/src/lib/shacl-validator.ts +314 -0
  148. package/src/lib/turtle-parser.ts +277 -0
  149. package/src/shapes/checkup.shapes.ttl +1459 -0
  150. package/src/shapes/clinical.shapes.ttl +1350 -0
  151. package/src/shapes/clinical.ttl +1369 -0
  152. package/src/shapes/core.shapes.ttl +450 -0
  153. package/src/shapes/core.ttl +603 -0
  154. package/src/shapes/coverage.shapes.ttl +214 -0
  155. package/src/shapes/coverage.ttl +182 -0
  156. package/src/shapes/health.shapes.ttl +697 -0
  157. package/src/shapes/health.ttl +859 -0
  158. package/src/shapes/pots.shapes.ttl +481 -0
  159. package/test-fixtures/fhir-bundle-example.json +216 -0
  160. package/test-fixtures/fhir-medication-example.json +18 -0
  161. package/tests/cli.test.ts +126 -0
  162. package/tests/fhir-converter.test.ts +874 -0
  163. package/tests/mcp-server.test.ts +396 -0
  164. package/tests/pod.test.ts +400 -0
  165. package/tsconfig.json +24 -0
package/.dockerignore ADDED
@@ -0,0 +1,7 @@
1
+ node_modules/
2
+ dist/
3
+ *.test.ts
4
+ .git/
5
+ coverage/
6
+ *.md
7
+ tests/
package/.eslintrc.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "root": true,
3
+ "parser": "@typescript-eslint/parser",
4
+ "parserOptions": {
5
+ "ecmaVersion": 2022,
6
+ "sourceType": "module",
7
+ "project": "./tsconfig.json"
8
+ },
9
+ "plugins": ["@typescript-eslint"],
10
+ "extends": [
11
+ "eslint:recommended",
12
+ "plugin:@typescript-eslint/recommended"
13
+ ],
14
+ "rules": {
15
+ "@typescript-eslint/no-explicit-any": "warn",
16
+ "@typescript-eslint/explicit-function-return-type": "off",
17
+ "@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }]
18
+ },
19
+ "env": {
20
+ "node": true,
21
+ "es2022": true
22
+ }
23
+ }
package/.prettierrc ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "semi": true,
3
+ "trailingComma": "all",
4
+ "singleQuote": true,
5
+ "printWidth": 100,
6
+ "tabWidth": 2
7
+ }
package/DOCKER.md ADDED
@@ -0,0 +1,36 @@
1
+ # cascade-protocol/tools Docker Image
2
+
3
+ Run the Cascade Protocol CLI without installing Node.js.
4
+
5
+ ## Quick Start
6
+
7
+ ```bash
8
+ # Validate a Turtle file
9
+ docker run --rm -v $(pwd):/data cascade-protocol/tools cascade validate /data/record.ttl
10
+
11
+ # Query a local Pod
12
+ docker run --rm -v ./my-pod:/data cascade-protocol/tools cascade pod query --all /data
13
+
14
+ # Convert FHIR to Cascade
15
+ docker run --rm -v $(pwd):/data cascade-protocol/tools cascade convert --from fhir --to cascade /data/patient.json
16
+ ```
17
+
18
+ ## Build Locally
19
+
20
+ ```bash
21
+ docker build -t cascade-protocol/tools .
22
+ ```
23
+
24
+ ## Image Details
25
+
26
+ - Base: node:18-alpine
27
+ - Architecture: amd64, arm64
28
+ - Size: ~80MB
29
+ - Runs as non-root user (cascade)
30
+
31
+ ## Security
32
+
33
+ - No network calls during operation (data stays local)
34
+ - Runs as non-root user
35
+ - No telemetry or analytics
36
+ - Zero-knowledge: the image has no access to your data unless you explicitly mount a volume
package/Dockerfile ADDED
@@ -0,0 +1,18 @@
1
+ # Stage 1: Build
2
+ FROM node:18-alpine AS builder
3
+ WORKDIR /app
4
+ COPY package*.json ./
5
+ RUN npm ci
6
+ COPY src/ ./src/
7
+ COPY tsconfig.json ./
8
+ RUN npm run build
9
+
10
+ # Stage 2: Production
11
+ FROM node:18-alpine AS production
12
+ WORKDIR /app
13
+ RUN addgroup -S cascade && adduser -S cascade -G cascade
14
+ COPY package*.json ./
15
+ RUN npm ci --omit=dev
16
+ COPY --from=builder /app/dist ./dist/
17
+ USER cascade
18
+ ENTRYPOINT ["node", "dist/index.js"]
package/README.md ADDED
@@ -0,0 +1,69 @@
1
+ # @the-cascade-protocol/cli
2
+
3
+ Cascade Protocol CLI - Validate, convert, and manage health data.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install -g @the-cascade-protocol/cli
9
+ ```
10
+
11
+ Or use directly with npx:
12
+
13
+ ```bash
14
+ npx @the-cascade-protocol/cli validate record.ttl
15
+ ```
16
+
17
+ ## Docker
18
+
19
+ Run the CLI without installing Node.js. See [DOCKER.md](DOCKER.md) for full details.
20
+
21
+ ```bash
22
+ # Build the image
23
+ docker build -t cascade-protocol/tools .
24
+
25
+ # Validate a Turtle file
26
+ docker run --rm -v $(pwd):/data cascade-protocol/tools cascade validate /data/record.ttl
27
+ ```
28
+
29
+ ## Usage
30
+
31
+ ```
32
+ cascade <command> [options]
33
+
34
+ Commands:
35
+ validate Validate Cascade data against SHACL shapes
36
+ convert Convert between health data formats
37
+ pod Manage Cascade Pod structures
38
+ conformance Run conformance test suite
39
+ serve Start local agent server
40
+ capabilities Show machine-readable tool descriptions
41
+
42
+ Flags:
43
+ --help Show help
44
+ --version Show version
45
+ --verbose Verbose output
46
+ --json Output results as JSON (machine-readable)
47
+ ```
48
+
49
+ ## Examples
50
+
51
+ ```bash
52
+ cascade validate record.ttl
53
+ cascade convert --from fhir --to cascade patient.json
54
+ cascade pod init ./my-pod
55
+ cascade capabilities
56
+ ```
57
+
58
+ ## Development
59
+
60
+ ```bash
61
+ npm install
62
+ npm run build
63
+ npm run dev -- --help
64
+ npm test
65
+ ```
66
+
67
+ ## License
68
+
69
+ Apache-2.0
@@ -0,0 +1,9 @@
1
+ /**
2
+ * cascade capabilities
3
+ *
4
+ * Output a machine-readable JSON description of all CLI commands and their
5
+ * parameters. Designed for consumption by AI agents and tooling.
6
+ */
7
+ import { Command } from 'commander';
8
+ export declare function registerCapabilitiesCommand(program: Command): void;
9
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/commands/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiNpC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkBlE"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * cascade capabilities
3
+ *
4
+ * Output a machine-readable JSON description of all CLI commands and their
5
+ * parameters. Designed for consumption by AI agents and tooling.
6
+ */
7
+ import { printResult } from '../lib/output.js';
8
+ function getCapabilities(version) {
9
+ return {
10
+ name: '@the-cascade-protocol/cli',
11
+ version,
12
+ description: 'Cascade Protocol CLI - Validate, convert, and manage health data with zero network calls',
13
+ protocol: 'https://cascadeprotocol.org',
14
+ securityModel: {
15
+ networkCalls: 'zero — all operations are local',
16
+ dataStorage: 'local filesystem only',
17
+ provenance: 'all agent-written data tagged with AIGenerated provenance',
18
+ auditLog: 'all MCP operations logged to provenance/audit-log.ttl',
19
+ },
20
+ tools: [
21
+ {
22
+ name: 'validate',
23
+ description: 'Validate Cascade Protocol data against SHACL shapes',
24
+ usage: 'cascade validate <file-or-dir> [options]',
25
+ parameters: [
26
+ { name: 'file-or-dir', type: 'string', required: true, description: 'Turtle file or directory to validate' },
27
+ { name: '--shapes', type: 'string', required: false, description: 'Path to custom SHACL shapes directory' },
28
+ { name: '--json', type: 'boolean', required: false, description: 'Output results as JSON' },
29
+ { name: '--verbose', type: 'boolean', required: false, description: 'Show detailed validation information' },
30
+ ],
31
+ examples: ['cascade validate record.ttl', 'cascade validate ./data/ --json'],
32
+ status: 'implemented',
33
+ },
34
+ {
35
+ name: 'convert',
36
+ description: 'Convert between health data formats (FHIR R4 JSON, Cascade Turtle, JSON-LD)',
37
+ usage: 'cascade convert [file] --from <format> --to <format> [options]',
38
+ parameters: [
39
+ { name: 'file', type: 'string', required: false, description: 'Input file (reads from stdin if omitted)' },
40
+ { name: '--from', type: 'string', required: true, description: 'Source format', choices: ['fhir', 'cascade'] },
41
+ { name: '--to', type: 'string', required: true, description: 'Target format', choices: ['turtle', 'jsonld', 'fhir'] },
42
+ { name: '--format', type: 'string', required: false, description: 'Output serialization format', default: 'turtle', choices: ['turtle', 'jsonld'] },
43
+ { name: '--json', type: 'boolean', required: false, description: 'Output results as JSON' },
44
+ ],
45
+ examples: ['cascade convert patient.json --from fhir --to turtle', 'cat data.json | cascade convert --from fhir --to turtle'],
46
+ status: 'implemented',
47
+ },
48
+ {
49
+ name: 'pod init',
50
+ description: 'Initialize a new Cascade Pod directory structure',
51
+ usage: 'cascade pod init <directory>',
52
+ parameters: [{ name: 'directory', type: 'string', required: true, description: 'Directory to initialize as a Cascade Pod' }],
53
+ examples: ['cascade pod init ./my-pod'],
54
+ status: 'implemented',
55
+ },
56
+ {
57
+ name: 'pod query',
58
+ description: 'Query data within a Cascade Pod by type',
59
+ usage: 'cascade pod query <pod-dir> [options]',
60
+ parameters: [
61
+ { name: 'pod-dir', type: 'string', required: true, description: 'Path to the Cascade Pod' },
62
+ { name: '--medications', type: 'boolean', required: false, description: 'Query medications' },
63
+ { name: '--conditions', type: 'boolean', required: false, description: 'Query conditions' },
64
+ { name: '--allergies', type: 'boolean', required: false, description: 'Query allergies' },
65
+ { name: '--lab-results', type: 'boolean', required: false, description: 'Query lab results' },
66
+ { name: '--all', type: 'boolean', required: false, description: 'Query all data' },
67
+ { name: '--json', type: 'boolean', required: false, description: 'Output as JSON' },
68
+ ],
69
+ examples: ['cascade pod query ./my-pod --medications --json', 'cascade pod query ./my-pod --all --json'],
70
+ status: 'implemented',
71
+ },
72
+ {
73
+ name: 'pod info',
74
+ description: 'Show Cascade Pod metadata and statistics',
75
+ usage: 'cascade pod info <pod-dir>',
76
+ parameters: [{ name: 'pod-dir', type: 'string', required: true, description: 'Path to the Cascade Pod' }],
77
+ examples: ['cascade pod info ./my-pod'],
78
+ status: 'implemented',
79
+ },
80
+ {
81
+ name: 'pod export',
82
+ description: 'Export Cascade Pod data as ZIP or directory',
83
+ usage: 'cascade pod export <pod-dir> [options]',
84
+ parameters: [
85
+ { name: 'pod-dir', type: 'string', required: true, description: 'Path to the Cascade Pod' },
86
+ { name: '--format', type: 'string', required: false, description: 'Export format', default: 'zip', choices: ['zip', 'directory'] },
87
+ ],
88
+ examples: ['cascade pod export ./my-pod', 'cascade pod export ./my-pod --format directory'],
89
+ status: 'implemented',
90
+ },
91
+ {
92
+ name: 'conformance run',
93
+ description: 'Run conformance test suite (53 fixtures)',
94
+ usage: 'cascade conformance run --suite <fixtures-dir> --self',
95
+ parameters: [
96
+ { name: '--suite', type: 'string', required: true, description: 'Path to test fixtures directory' },
97
+ { name: '--self', type: 'boolean', required: false, description: 'Run self-conformance tests' },
98
+ { name: '--json', type: 'boolean', required: false, description: 'Output results as JSON' },
99
+ ],
100
+ examples: ['cascade conformance run --suite ./fixtures --self'],
101
+ status: 'implemented',
102
+ },
103
+ {
104
+ name: 'serve',
105
+ description: 'Start local MCP-compatible agent server',
106
+ usage: 'cascade serve --mcp [options]',
107
+ parameters: [
108
+ { name: '--mcp', type: 'boolean', required: true, description: 'Enable MCP (Model Context Protocol) mode' },
109
+ { name: '--transport', type: 'string', required: false, description: 'Transport type', default: 'stdio', choices: ['stdio', 'sse'] },
110
+ { name: '--port', type: 'string', required: false, description: 'Port for SSE transport', default: '3000' },
111
+ { name: '--pod', type: 'string', required: false, description: 'Default Pod directory path' },
112
+ ],
113
+ examples: ['cascade serve --mcp', 'cascade serve --mcp --transport sse --port 3000'],
114
+ status: 'implemented',
115
+ },
116
+ {
117
+ name: 'capabilities',
118
+ description: 'Show machine-readable JSON description of all CLI tools and MCP tools',
119
+ usage: 'cascade capabilities',
120
+ parameters: [],
121
+ examples: ['cascade capabilities'],
122
+ status: 'implemented',
123
+ },
124
+ ],
125
+ mcpTools: [
126
+ {
127
+ name: 'cascade_pod_read',
128
+ description: 'Read a Cascade Pod and return a JSON summary of all contents',
129
+ parameters: { path: { type: 'string', description: 'Pod directory path (optional, uses CASCADE_POD_PATH)', required: false } },
130
+ },
131
+ {
132
+ name: 'cascade_pod_query',
133
+ description: 'Query records from a Pod by data type',
134
+ parameters: {
135
+ path: { type: 'string', description: 'Pod directory path (optional)', required: false },
136
+ dataType: { type: 'string', description: 'Data type to query', required: true, enum: ['medications', 'conditions', 'allergies', 'lab-results', 'immunizations', 'vital-signs', 'supplements', 'insurance', 'patient-profile', 'heart-rate', 'blood-pressure', 'activity', 'sleep', 'all'] },
137
+ },
138
+ },
139
+ {
140
+ name: 'cascade_validate',
141
+ description: 'Validate Turtle data against SHACL shapes',
142
+ parameters: {
143
+ path: { type: 'string', description: 'File or directory path', required: false },
144
+ content: { type: 'string', description: 'Inline Turtle content', required: false },
145
+ },
146
+ },
147
+ {
148
+ name: 'cascade_convert',
149
+ description: 'Convert between FHIR R4 JSON and Cascade Turtle/JSON-LD',
150
+ parameters: {
151
+ content: { type: 'string', description: 'Content to convert', required: true },
152
+ from: { type: 'string', description: 'Source format', required: true, enum: ['fhir', 'cascade'] },
153
+ to: { type: 'string', description: 'Target format', required: true, enum: ['cascade', 'fhir'] },
154
+ format: { type: 'string', description: 'Output format (turtle or jsonld)', required: false, enum: ['turtle', 'jsonld'] },
155
+ },
156
+ },
157
+ {
158
+ name: 'cascade_write',
159
+ description: 'Write a health record to a Pod with AIGenerated provenance',
160
+ parameters: {
161
+ path: { type: 'string', description: 'Pod directory path (optional)', required: false },
162
+ dataType: { type: 'string', description: 'Record type', required: true, enum: ['medications', 'conditions', 'allergies', 'lab-results', 'immunizations', 'vital-signs', 'supplements'] },
163
+ record: { type: 'object', description: 'JSON object with record fields', required: true },
164
+ provenance: { type: 'object', description: 'Provenance metadata (agentId, reason, confidence, sourceRecords)', required: false },
165
+ },
166
+ },
167
+ {
168
+ name: 'cascade_capabilities',
169
+ description: 'Describe all available tools and their schemas',
170
+ parameters: {},
171
+ },
172
+ ],
173
+ };
174
+ }
175
+ export function registerCapabilitiesCommand(program) {
176
+ program
177
+ .command('capabilities')
178
+ .description('Show machine-readable tool descriptions')
179
+ .action(() => {
180
+ const globalOpts = program.opts();
181
+ const version = program.version() ?? '0.1.0';
182
+ const capabilities = getCapabilities(version);
183
+ // Capabilities always outputs JSON, regardless of --json flag
184
+ // This is intentional: the purpose of this command is machine-readable output
185
+ if (globalOpts.json) {
186
+ printResult(capabilities, { json: true, verbose: globalOpts.verbose });
187
+ }
188
+ else {
189
+ // Even in non-JSON mode, output formatted JSON for readability
190
+ printResult(capabilities, { json: true, verbose: globalOpts.verbose });
191
+ }
192
+ });
193
+ }
194
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/commands/capabilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * cascade conformance run
3
+ *
4
+ * Run conformance test suite against a CLI command or self-test.
5
+ *
6
+ * Options:
7
+ * --suite <fixtures-dir> Path to test fixtures directory
8
+ * --command "<cmd>" External command to test
9
+ * --self Run self-conformance tests
10
+ * --json Output results as JSON
11
+ * --verbose Show detailed test output
12
+ */
13
+ import { Command } from 'commander';
14
+ export declare function registerConformanceCommand(program: Command): void;
15
+ //# sourceMappingURL=conformance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../../src/commands/conformance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuWpC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwEjE"}