arc-1 0.6.10 → 0.7.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 (115) hide show
  1. package/README.md +8 -7
  2. package/bin/arc1-cli.js +10 -0
  3. package/bin/arc1.js +1 -1
  4. package/dist/adt/cds-impact.d.ts +35 -0
  5. package/dist/adt/cds-impact.d.ts.map +1 -1
  6. package/dist/adt/cds-impact.js +71 -0
  7. package/dist/adt/cds-impact.js.map +1 -1
  8. package/dist/adt/client.d.ts +4 -1
  9. package/dist/adt/client.d.ts.map +1 -1
  10. package/dist/adt/client.js +18 -5
  11. package/dist/adt/client.js.map +1 -1
  12. package/dist/adt/crud.d.ts.map +1 -1
  13. package/dist/adt/crud.js +32 -5
  14. package/dist/adt/crud.js.map +1 -1
  15. package/dist/adt/devtools.d.ts +39 -3
  16. package/dist/adt/devtools.d.ts.map +1 -1
  17. package/dist/adt/devtools.js +237 -25
  18. package/dist/adt/devtools.js.map +1 -1
  19. package/dist/adt/diagnostics.d.ts +69 -7
  20. package/dist/adt/diagnostics.d.ts.map +1 -1
  21. package/dist/adt/diagnostics.js +694 -36
  22. package/dist/adt/diagnostics.js.map +1 -1
  23. package/dist/adt/errors.d.ts +14 -1
  24. package/dist/adt/errors.d.ts.map +1 -1
  25. package/dist/adt/errors.js +40 -9
  26. package/dist/adt/errors.js.map +1 -1
  27. package/dist/adt/http.d.ts.map +1 -1
  28. package/dist/adt/http.js +86 -1
  29. package/dist/adt/http.js.map +1 -1
  30. package/dist/adt/rap-handlers.d.ts +165 -0
  31. package/dist/adt/rap-handlers.d.ts.map +1 -0
  32. package/dist/adt/rap-handlers.js +835 -0
  33. package/dist/adt/rap-handlers.js.map +1 -0
  34. package/dist/adt/rap-preflight.d.ts +43 -0
  35. package/dist/adt/rap-preflight.d.ts.map +1 -0
  36. package/dist/adt/rap-preflight.js +405 -0
  37. package/dist/adt/rap-preflight.js.map +1 -0
  38. package/dist/adt/safety.d.ts +60 -36
  39. package/dist/adt/safety.d.ts.map +1 -1
  40. package/dist/adt/safety.js +202 -120
  41. package/dist/adt/safety.js.map +1 -1
  42. package/dist/adt/transport.d.ts +1 -1
  43. package/dist/adt/transport.js +2 -2
  44. package/dist/adt/transport.js.map +1 -1
  45. package/dist/adt/types.d.ts +88 -0
  46. package/dist/adt/types.d.ts.map +1 -1
  47. package/dist/adt/xml-parser.d.ts +13 -1
  48. package/dist/adt/xml-parser.d.ts.map +1 -1
  49. package/dist/adt/xml-parser.js +26 -15
  50. package/dist/adt/xml-parser.js.map +1 -1
  51. package/dist/authz/policy.d.ts +53 -0
  52. package/dist/authz/policy.d.ts.map +1 -0
  53. package/dist/authz/policy.js +199 -0
  54. package/dist/authz/policy.js.map +1 -0
  55. package/dist/cli-args.d.ts +14 -0
  56. package/dist/cli-args.d.ts.map +1 -0
  57. package/dist/cli-args.js +62 -0
  58. package/dist/cli-args.js.map +1 -0
  59. package/dist/cli.d.ts +13 -7
  60. package/dist/cli.d.ts.map +1 -1
  61. package/dist/cli.js +252 -55
  62. package/dist/cli.js.map +1 -1
  63. package/dist/extract-sap-cookies.d.ts +24 -0
  64. package/dist/extract-sap-cookies.d.ts.map +1 -0
  65. package/dist/extract-sap-cookies.js +317 -0
  66. package/dist/extract-sap-cookies.js.map +1 -0
  67. package/dist/handlers/hyperfocused.d.ts +4 -3
  68. package/dist/handlers/hyperfocused.d.ts.map +1 -1
  69. package/dist/handlers/hyperfocused.js +25 -16
  70. package/dist/handlers/hyperfocused.js.map +1 -1
  71. package/dist/handlers/intent.d.ts +4 -12
  72. package/dist/handlers/intent.d.ts.map +1 -1
  73. package/dist/handlers/intent.js +1238 -114
  74. package/dist/handlers/intent.js.map +1 -1
  75. package/dist/handlers/schemas.d.ts +38 -10
  76. package/dist/handlers/schemas.d.ts.map +1 -1
  77. package/dist/handlers/schemas.js +69 -4
  78. package/dist/handlers/schemas.js.map +1 -1
  79. package/dist/handlers/tools.d.ts.map +1 -1
  80. package/dist/handlers/tools.js +251 -164
  81. package/dist/handlers/tools.js.map +1 -1
  82. package/dist/index.d.ts +1 -1
  83. package/dist/index.js +7 -6
  84. package/dist/index.js.map +1 -1
  85. package/dist/server/audit.d.ts +26 -3
  86. package/dist/server/audit.d.ts.map +1 -1
  87. package/dist/server/audit.js.map +1 -1
  88. package/dist/server/config.d.ts +34 -19
  89. package/dist/server/config.d.ts.map +1 -1
  90. package/dist/server/config.js +320 -193
  91. package/dist/server/config.js.map +1 -1
  92. package/dist/server/deny-actions.d.ts +31 -0
  93. package/dist/server/deny-actions.d.ts.map +1 -0
  94. package/dist/server/deny-actions.js +156 -0
  95. package/dist/server/deny-actions.js.map +1 -0
  96. package/dist/server/effective-policy-log.d.ts +27 -0
  97. package/dist/server/effective-policy-log.d.ts.map +1 -0
  98. package/dist/server/effective-policy-log.js +103 -0
  99. package/dist/server/effective-policy-log.js.map +1 -0
  100. package/dist/server/http.d.ts.map +1 -1
  101. package/dist/server/http.js +15 -16
  102. package/dist/server/http.js.map +1 -1
  103. package/dist/server/server.d.ts +37 -3
  104. package/dist/server/server.d.ts.map +1 -1
  105. package/dist/server/server.js +231 -30
  106. package/dist/server/server.js.map +1 -1
  107. package/dist/server/types.d.ts +29 -13
  108. package/dist/server/types.d.ts.map +1 -1
  109. package/dist/server/types.js +10 -11
  110. package/dist/server/types.js.map +1 -1
  111. package/dist/server/xsuaa.d.ts +1 -2
  112. package/dist/server/xsuaa.d.ts.map +1 -1
  113. package/dist/server/xsuaa.js +13 -14
  114. package/dist/server/xsuaa.js.map +1 -1
  115. package/package.json +6 -3
@@ -0,0 +1,199 @@
1
+ /**
2
+ * ACTION_POLICY — single source of truth for scope/opType/featureGate per tool+action.
3
+ *
4
+ * Every MCP tool call is gated by this matrix. `handleToolCall` in intent.ts looks up
5
+ * `(tool, action-or-type)` here to get the required scope (user-gate) and OperationType
6
+ * (server-safety gate). Tool-listing pruning in server.ts also reads from here to hide
7
+ * actions the user can't execute.
8
+ *
9
+ * Lookup rules:
10
+ * - Specific key `Tool.action` or `Tool.type` wins if present.
11
+ * - Falls back to tool-level key `Tool`.
12
+ * - Missing → treated as "unknown action" error at runtime.
13
+ *
14
+ * Admin-facing invariant: the CI validator at scripts/validate-action-policy.ts
15
+ * asserts every action in src/handlers/schemas.ts is covered here, and vice versa.
16
+ * If you add a new action, add its policy entry here and the validator will tell
17
+ * you if you forgot.
18
+ */
19
+ import { OperationType } from '../adt/safety.js';
20
+ /** The central policy matrix — all tools, all actions/types. */
21
+ export const ACTION_POLICY = {
22
+ // ── SAPRead ──────────────────────────────────────────────────────
23
+ // Tool-level default — applies to all SAP object reads (PROG, CLAS, etc.)
24
+ SAPRead: { scope: 'read', opType: OperationType.Read },
25
+ // Per-type overrides
26
+ 'SAPRead.TABLE_CONTENTS': { scope: 'data', opType: OperationType.Query },
27
+ // ── SAPSearch ────────────────────────────────────────────────────
28
+ SAPSearch: { scope: 'read', opType: OperationType.Search },
29
+ // ── SAPQuery (freestyle SQL) ─────────────────────────────────────
30
+ SAPQuery: { scope: 'sql', opType: OperationType.FreeSQL },
31
+ // ── SAPWrite ─────────────────────────────────────────────────────
32
+ SAPWrite: { scope: 'write', opType: OperationType.Update },
33
+ 'SAPWrite.create': { scope: 'write', opType: OperationType.Create },
34
+ 'SAPWrite.update': { scope: 'write', opType: OperationType.Update },
35
+ 'SAPWrite.delete': { scope: 'write', opType: OperationType.Delete },
36
+ 'SAPWrite.edit_method': { scope: 'write', opType: OperationType.Update },
37
+ 'SAPWrite.batch_create': { scope: 'write', opType: OperationType.Create },
38
+ // scaffold_rap_handlers updates an existing behavior-pool CLAS (writes method
39
+ // declarations into one or more includes). It is a RAP-feature-specific
40
+ // action — explicit entry lets admins target it with SAP_DENY_ACTIONS
41
+ // (e.g. "SAPWrite.scaffold_rap_handlers") to block it while still allowing
42
+ // plain create/update. The featureGate tag also keeps this action aligned
43
+ // with the SAPTransport/SAPGit/FLP pattern for future enforcement.
44
+ 'SAPWrite.scaffold_rap_handlers': { scope: 'write', opType: OperationType.Update, featureGate: 'rap' },
45
+ // ── SAPActivate ──────────────────────────────────────────────────
46
+ SAPActivate: { scope: 'write', opType: OperationType.Activate },
47
+ 'SAPActivate.activate': { scope: 'write', opType: OperationType.Activate },
48
+ 'SAPActivate.publish_srvb': { scope: 'write', opType: OperationType.Activate },
49
+ 'SAPActivate.unpublish_srvb': { scope: 'write', opType: OperationType.Activate },
50
+ // ── SAPNavigate ──────────────────────────────────────────────────
51
+ SAPNavigate: { scope: 'read', opType: OperationType.Intelligence },
52
+ 'SAPNavigate.definition': { scope: 'read', opType: OperationType.Intelligence },
53
+ 'SAPNavigate.references': { scope: 'read', opType: OperationType.Intelligence },
54
+ 'SAPNavigate.completion': { scope: 'read', opType: OperationType.Intelligence },
55
+ 'SAPNavigate.hierarchy': { scope: 'read', opType: OperationType.Intelligence },
56
+ // ── SAPLint ──────────────────────────────────────────────────────
57
+ SAPLint: { scope: 'read', opType: OperationType.Intelligence },
58
+ 'SAPLint.lint': { scope: 'read', opType: OperationType.Intelligence },
59
+ 'SAPLint.lint_and_fix': { scope: 'read', opType: OperationType.Intelligence },
60
+ 'SAPLint.list_rules': { scope: 'read', opType: OperationType.Intelligence },
61
+ 'SAPLint.format': { scope: 'read', opType: OperationType.Intelligence },
62
+ 'SAPLint.get_formatter_settings': { scope: 'read', opType: OperationType.Intelligence },
63
+ // CLASSIFICATION BUG FIX: set_formatter_settings mutates server-side settings
64
+ 'SAPLint.set_formatter_settings': { scope: 'write', opType: OperationType.Update },
65
+ // ── SAPDiagnose ──────────────────────────────────────────────────
66
+ SAPDiagnose: { scope: 'read', opType: OperationType.Read },
67
+ 'SAPDiagnose.syntax': { scope: 'read', opType: OperationType.Read },
68
+ 'SAPDiagnose.unittest': { scope: 'read', opType: OperationType.Test },
69
+ 'SAPDiagnose.atc': { scope: 'read', opType: OperationType.Read },
70
+ 'SAPDiagnose.dumps': { scope: 'read', opType: OperationType.Read },
71
+ 'SAPDiagnose.traces': { scope: 'read', opType: OperationType.Read },
72
+ 'SAPDiagnose.system_messages': { scope: 'read', opType: OperationType.Read },
73
+ 'SAPDiagnose.gateway_errors': { scope: 'read', opType: OperationType.Read },
74
+ 'SAPDiagnose.quickfix': { scope: 'read', opType: OperationType.Read },
75
+ 'SAPDiagnose.apply_quickfix': { scope: 'read', opType: OperationType.Read },
76
+ // ── SAPTransport ─────────────────────────────────────────────────
77
+ // CLASSIFICATION BUG FIX: check/history/list/get are reads; previously required write
78
+ SAPTransport: { scope: 'read', opType: OperationType.Read, featureGate: 'transport' },
79
+ 'SAPTransport.list': { scope: 'read', opType: OperationType.Read, featureGate: 'transport' },
80
+ 'SAPTransport.get': { scope: 'read', opType: OperationType.Read, featureGate: 'transport' },
81
+ 'SAPTransport.check': { scope: 'read', opType: OperationType.Read, featureGate: 'transport' },
82
+ 'SAPTransport.history': { scope: 'read', opType: OperationType.Read, featureGate: 'transport' },
83
+ 'SAPTransport.create': { scope: 'transports', opType: OperationType.Transport, featureGate: 'transport' },
84
+ 'SAPTransport.release': { scope: 'transports', opType: OperationType.Transport, featureGate: 'transport' },
85
+ 'SAPTransport.release_recursive': { scope: 'transports', opType: OperationType.Transport, featureGate: 'transport' },
86
+ 'SAPTransport.reassign': { scope: 'transports', opType: OperationType.Transport, featureGate: 'transport' },
87
+ 'SAPTransport.delete': { scope: 'transports', opType: OperationType.Transport, featureGate: 'transport' },
88
+ // ── SAPGit ───────────────────────────────────────────────────────
89
+ SAPGit: { scope: 'read', opType: OperationType.Read, featureGate: 'git' },
90
+ 'SAPGit.list_repos': { scope: 'read', opType: OperationType.Read, featureGate: 'git' },
91
+ 'SAPGit.whoami': { scope: 'read', opType: OperationType.Read, featureGate: 'git' },
92
+ 'SAPGit.config': { scope: 'read', opType: OperationType.Read, featureGate: 'git' },
93
+ 'SAPGit.branches': { scope: 'read', opType: OperationType.Read, featureGate: 'git' },
94
+ 'SAPGit.external_info': { scope: 'read', opType: OperationType.Read, featureGate: 'git' },
95
+ 'SAPGit.history': { scope: 'read', opType: OperationType.Read, featureGate: 'git' },
96
+ 'SAPGit.objects': { scope: 'read', opType: OperationType.Read, featureGate: 'git' },
97
+ 'SAPGit.check': { scope: 'read', opType: OperationType.Read, featureGate: 'git' },
98
+ 'SAPGit.stage': { scope: 'git', opType: OperationType.Update, featureGate: 'git' },
99
+ 'SAPGit.clone': { scope: 'git', opType: OperationType.Create, featureGate: 'git' },
100
+ 'SAPGit.pull': { scope: 'git', opType: OperationType.Update, featureGate: 'git' },
101
+ 'SAPGit.push': { scope: 'git', opType: OperationType.Update, featureGate: 'git' },
102
+ 'SAPGit.commit': { scope: 'git', opType: OperationType.Update, featureGate: 'git' },
103
+ 'SAPGit.switch_branch': { scope: 'git', opType: OperationType.Update, featureGate: 'git' },
104
+ 'SAPGit.create_branch': { scope: 'git', opType: OperationType.Create, featureGate: 'git' },
105
+ 'SAPGit.unlink': { scope: 'git', opType: OperationType.Delete, featureGate: 'git' },
106
+ // ── SAPContext ───────────────────────────────────────────────────
107
+ SAPContext: { scope: 'read', opType: OperationType.Intelligence },
108
+ 'SAPContext.deps': { scope: 'read', opType: OperationType.Intelligence },
109
+ 'SAPContext.usages': { scope: 'read', opType: OperationType.Intelligence },
110
+ 'SAPContext.impact': { scope: 'read', opType: OperationType.Intelligence },
111
+ // ── SAPManage ────────────────────────────────────────────────────
112
+ SAPManage: { scope: 'write', opType: OperationType.Update },
113
+ 'SAPManage.features': { scope: 'read', opType: OperationType.Read },
114
+ 'SAPManage.probe': { scope: 'read', opType: OperationType.Read },
115
+ 'SAPManage.cache_stats': { scope: 'read', opType: OperationType.Read },
116
+ 'SAPManage.create_package': { scope: 'write', opType: OperationType.Create },
117
+ 'SAPManage.delete_package': { scope: 'write', opType: OperationType.Delete },
118
+ 'SAPManage.change_package': { scope: 'write', opType: OperationType.Update },
119
+ // CLASSIFICATION BUG FIX: flp_list_* are read operations; previously required write
120
+ 'SAPManage.flp_list_catalogs': { scope: 'read', opType: OperationType.Read, featureGate: 'flp' },
121
+ 'SAPManage.flp_list_groups': { scope: 'read', opType: OperationType.Read, featureGate: 'flp' },
122
+ 'SAPManage.flp_list_tiles': { scope: 'read', opType: OperationType.Read, featureGate: 'flp' },
123
+ 'SAPManage.flp_create_catalog': { scope: 'write', opType: OperationType.Workflow, featureGate: 'flp' },
124
+ 'SAPManage.flp_create_group': { scope: 'write', opType: OperationType.Workflow, featureGate: 'flp' },
125
+ 'SAPManage.flp_create_tile': { scope: 'write', opType: OperationType.Workflow, featureGate: 'flp' },
126
+ 'SAPManage.flp_add_tile_to_group': { scope: 'write', opType: OperationType.Workflow, featureGate: 'flp' },
127
+ 'SAPManage.flp_delete_catalog': { scope: 'write', opType: OperationType.Workflow, featureGate: 'flp' },
128
+ // ── Hyperfocused SAP (single-tool mode) ──────────────────────────
129
+ // Mirrors the action surface of the non-hyperfocused tools. Keys are SAP.<action>.
130
+ // Most are identical to the per-tool entries above.
131
+ SAP: { scope: 'read', opType: OperationType.Read },
132
+ 'SAP.read': { scope: 'read', opType: OperationType.Read },
133
+ 'SAP.search': { scope: 'read', opType: OperationType.Search },
134
+ 'SAP.query': { scope: 'sql', opType: OperationType.FreeSQL },
135
+ 'SAP.navigate': { scope: 'read', opType: OperationType.Intelligence },
136
+ 'SAP.context': { scope: 'read', opType: OperationType.Intelligence },
137
+ 'SAP.lint': { scope: 'read', opType: OperationType.Intelligence },
138
+ 'SAP.diagnose': { scope: 'read', opType: OperationType.Read },
139
+ 'SAP.write': { scope: 'write', opType: OperationType.Update },
140
+ 'SAP.activate': { scope: 'write', opType: OperationType.Activate },
141
+ // Hyperfocused delegators are intentionally read-scoped at the top level.
142
+ // The recursive real-tool call enforces the concrete sub-action policy
143
+ // (for example SAPTransport.create => transports, SAPManage.create_package => write).
144
+ 'SAP.transport': { scope: 'read', opType: OperationType.Read, featureGate: 'transport' },
145
+ 'SAP.git': { scope: 'read', opType: OperationType.Read, featureGate: 'git' },
146
+ 'SAP.manage': { scope: 'read', opType: OperationType.Read },
147
+ };
148
+ /**
149
+ * Look up the policy for a tool + optional action/type.
150
+ * Falls back to tool-level default if the specific key is absent.
151
+ */
152
+ export function getActionPolicy(tool, action) {
153
+ if (action) {
154
+ const specific = ACTION_POLICY[`${tool}.${action}`];
155
+ if (specific)
156
+ return specific;
157
+ }
158
+ return ACTION_POLICY[tool];
159
+ }
160
+ /** Return all keys in the policy matrix (used by validator + consistency tests). */
161
+ export function allPolicyKeys() {
162
+ return Object.keys(ACTION_POLICY);
163
+ }
164
+ /**
165
+ * Expand implicit scopes.
166
+ * - `admin` implies all other scopes.
167
+ * - `write` implies `read`.
168
+ * - `sql` implies `data`.
169
+ * Returns a sorted deduplicated list.
170
+ */
171
+ export function expandScopes(scopes) {
172
+ const expanded = new Set(scopes);
173
+ if (expanded.has('admin')) {
174
+ expanded.add('read');
175
+ expanded.add('write');
176
+ expanded.add('data');
177
+ expanded.add('sql');
178
+ expanded.add('transports');
179
+ expanded.add('git');
180
+ }
181
+ if (expanded.has('write'))
182
+ expanded.add('read');
183
+ if (expanded.has('sql'))
184
+ expanded.add('data');
185
+ return [...expanded].sort();
186
+ }
187
+ /**
188
+ * Check whether a user's scopes satisfy the required scope, applying implications.
189
+ * Returns true when:
190
+ * - The user has the exact required scope, OR
191
+ * - The user has `admin` (implies all), OR
192
+ * - required=`read` and the user has `write` OR any other scope that implies read, OR
193
+ * - required=`data` and the user has `sql`.
194
+ */
195
+ export function hasRequiredScope(scopes, required) {
196
+ const expanded = new Set(expandScopes(scopes));
197
+ return expanded.has(required);
198
+ }
199
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/authz/policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Pure argument-parsing helpers for the `arc1 call` command.
3
+ * Split out from cli.ts so tests can import without side effects
4
+ * (cli.ts invokes commander's `program.parse()` on import).
5
+ */
6
+ export type OutputMode = 'text' | 'json';
7
+ export declare function coerceValue(raw: string): unknown;
8
+ export declare function parseArgPair(pair: string): [string, unknown];
9
+ export declare function readJsonInput(source: string): Record<string, unknown>;
10
+ export declare function buildArgs(opts: {
11
+ arg?: string[];
12
+ json?: string;
13
+ }): Record<string, unknown>;
14
+ //# sourceMappingURL=cli-args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-args.d.ts","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzC,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAgBhD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAM5D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAerE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQ1F"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Pure argument-parsing helpers for the `arc1 call` command.
3
+ * Split out from cli.ts so tests can import without side effects
4
+ * (cli.ts invokes commander's `program.parse()` on import).
5
+ */
6
+ import { readFileSync } from 'node:fs';
7
+ export function coerceValue(raw) {
8
+ if (raw === 'true')
9
+ return true;
10
+ if (raw === 'false')
11
+ return false;
12
+ if (raw === 'null')
13
+ return null;
14
+ if (raw !== '' && /^-?(\d+(\.\d+)?|\.\d+)$/.test(raw) && !Number.isNaN(Number(raw))) {
15
+ return Number(raw);
16
+ }
17
+ const trimmed = raw.trimStart();
18
+ if (trimmed.startsWith('{') || trimmed.startsWith('[')) {
19
+ try {
20
+ return JSON.parse(raw);
21
+ }
22
+ catch {
23
+ // fall through — treat as literal string
24
+ }
25
+ }
26
+ return raw;
27
+ }
28
+ export function parseArgPair(pair) {
29
+ const idx = pair.indexOf('=');
30
+ if (idx <= 0) {
31
+ throw new Error(`Invalid --arg '${pair}': expected key=value`);
32
+ }
33
+ return [pair.slice(0, idx), coerceValue(pair.slice(idx + 1))];
34
+ }
35
+ export function readJsonInput(source) {
36
+ let text;
37
+ const trimmed = source.trimStart();
38
+ if (source === '-') {
39
+ text = readFileSync(0, 'utf-8');
40
+ }
41
+ else if (trimmed.startsWith('{') || trimmed.startsWith('[')) {
42
+ text = source;
43
+ }
44
+ else {
45
+ text = readFileSync(source, 'utf-8');
46
+ }
47
+ const parsed = JSON.parse(text);
48
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
49
+ throw new Error('--json payload must be a JSON object');
50
+ }
51
+ return parsed;
52
+ }
53
+ export function buildArgs(opts) {
54
+ const fromJson = opts.json ? readJsonInput(opts.json) : {};
55
+ const merged = { ...fromJson };
56
+ for (const pair of opts.arg ?? []) {
57
+ const [k, v] = parseArgPair(pair);
58
+ merged[k] = v;
59
+ }
60
+ return merged;
61
+ }
62
+ //# sourceMappingURL=cli-args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-args.js","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts CHANGED
@@ -1,14 +1,20 @@
1
1
  /**
2
2
  * ARC-1 CLI — command-line interface for SAP ADT operations.
3
3
  *
4
- * Minimal CLI for direct SAP interaction without an MCP client.
5
- * For the full MCP server, use `arc1` (runs index.ts).
4
+ * Exposed via the `arc1-cli` bin (separate from `arc1`, which is the MCP server entry).
6
5
  *
7
- * Commands:
8
- * arc1 search <query> - Search for ABAP objects
9
- * arc1 source <type> <name> - Get source code
10
- * arc1 lint <source-file> - Lint ABAP source code
11
- * arc1 version - Show version
6
+ * Two layers:
7
+ * - `arc1-cli serve` Start the MCP server (same as `arc1`).
8
+ * - `arc1-cli call <tool> [...]` Call any of the 12 MCP tools directly.
9
+ * - `arc1-cli tools [<tool>]` List tools / show a tool's JSON schema.
10
+ * - Shortcuts: `read`, `source` (alias), `activate`, `syntax`, `sql`, `lint`,
11
+ * `search`, `extract-cookies`, `version` — one-liners over `call` or helpers
12
+ * for common operations.
13
+ *
14
+ * The `call` command bypasses the MCP transport but reuses the same dispatch
15
+ * path (`handleToolCall` in src/handlers/intent.ts), so Zod validation,
16
+ * safety gates (`SAP_READ_ONLY`, `SAP_ALLOWED_PACKAGES`, ...), and audit
17
+ * logging all apply exactly as they do under `arc1 serve` stdio mode.
12
18
  */
13
19
  export {};
14
20
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG"}