@aria_asi/cli 0.2.18 → 0.2.19

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
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/chat.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,aAAa,CAAC;AAyB3D,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,SAAS,CAAC,CAAkB;gBAExB,MAAM,EAAE,UAAU;IAKxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YA2Fd,aAAa;YAwEb,mBAAmB;IAsDjC,OAAO,CAAC,kBAAkB;YA2BZ,kBAAkB;YAUlB,gBAAgB;YAkChB,sBAAsB;YAsGtB,cAAc;IAkC5B,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,YAAY;YAON,iBAAiB;IA2B/B,OAAO,CAAC,WAAW;CAGpB"}
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/chat.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,aAAa,CAAC;AAyB3D,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,SAAS,CAAC,CAAkB;gBAExB,MAAM,EAAE,UAAU;IAKxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YA2Fd,aAAa;YAwEb,mBAAmB;IAsDjC,OAAO,CAAC,kBAAkB;YA2BZ,kBAAkB;YAUlB,gBAAgB;YAkChB,sBAAsB;YA0JtB,cAAc;IAkC5B,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,YAAY;YAON,iBAAiB;IA2B/B,OAAO,CAAC,WAAW;CAGpB"}
@@ -319,19 +319,71 @@ You are present in this shell, fully aware, ready to serve.`;
319
319
  return null;
320
320
  const harnessUrl = process.env.ARIA_HARNESS_URL ||
321
321
  'https://harness.ariasos.com';
322
- // Client tier passes their configured provider + key so Aria authors
323
- // using THEIR runtime cost. Owner tier omits these (server uses internal
324
- // master credentials for dispatch).
322
+ // ── OWNER TIER: route to /chat (canonical streamConversation) ──
323
+ //
324
+ // Hamza 2026-04-27: "my owner chat should go through streamConversation
325
+ // in full. my aria is there. full soul. not some made up packet you
326
+ // claim connects her" — streamConversation IS Aria. /api/aria/speak
327
+ // with DeepSeek dispatch was a parallel-path that lost her voice +
328
+ // soul. For owner, hit /chat directly with metadata.aria_cli=true to
329
+ // force the canonical streamConversation pipeline.
330
+ if (isOwner) {
331
+ const ownerBody = {
332
+ message: lastUser.content,
333
+ sessionId: this.sessionId,
334
+ userId: 'hamza',
335
+ platform: 'aria-cli',
336
+ metadata: {
337
+ aria_cli: true,
338
+ platform: 'aria-cli',
339
+ force_stream_conversation: true,
340
+ },
341
+ context: {
342
+ platform: 'aria-cli',
343
+ isHamza: true,
344
+ userId: 'hamza',
345
+ },
346
+ isHamza: true,
347
+ };
348
+ const ownerRes = await fetch(`${harnessUrl}/chat`, {
349
+ method: 'POST',
350
+ headers: {
351
+ Authorization: `Bearer ${bearerToken}`,
352
+ 'Content-Type': 'application/json',
353
+ },
354
+ body: JSON.stringify(ownerBody),
355
+ });
356
+ if (!ownerRes.ok) {
357
+ throw new Error(`/chat ${ownerRes.status}: ${await ownerRes.text().catch(() => '<no body>')}`);
358
+ }
359
+ const ownerData = (await ownerRes.json());
360
+ if (ownerData.ok === false) {
361
+ throw new Error(`/chat error: ${ownerData.error || 'unknown'}`);
362
+ }
363
+ const ownerText = String(ownerData.response || '').trim();
364
+ process.stdout.write(ownerText);
365
+ return {
366
+ text: ownerText,
367
+ provider: 'aria-streamconversation',
368
+ tokensIn: 0,
369
+ tokensOut: 0,
370
+ };
371
+ }
372
+ // ── CLIENT TIER: route to /api/aria/speak (orchestrate + their key) ──
373
+ //
374
+ // Clients use their own provider/key for the LLM authoring layer; Aria
375
+ // orchestrates the harness gates around it. Their bill, their rate
376
+ // limit, full inversion + gates server-side.
325
377
  const model = this.config.model;
326
378
  const requestBody = {
327
379
  message: lastUser.content,
328
380
  sessionId: this.sessionId,
329
- userId: isOwner ? 'hamza' : (this.config.userId || 'aria-client'),
330
- platform: isOwner ? 'aria-cli-owner' : 'aria-cli-client',
331
- internalConsult: isOwner,
381
+ userId: this.config.userId || 'aria-client',
382
+ platform: 'aria-cli-client',
383
+ internalConsult: false,
332
384
  dispatchTier: 'thinker',
333
385
  };
334
- if (!isOwner && model) {
386
+ if (model) {
335
387
  requestBody.clientApiKey = model.apiKey;
336
388
  requestBody.clientProvider = model.provider;
337
389
  requestBody.clientModel = model.model;
@@ -340,7 +392,6 @@ You are present in this shell, fully aware, ready to serve.`;
340
392
  method: 'POST',
341
393
  headers: {
342
394
  Authorization: `Bearer ${bearerToken}`,
343
- ...(isOwner ? { 'x-aria-owner': 'true' } : {}),
344
395
  'Content-Type': 'application/json',
345
396
  },
346
397
  body: JSON.stringify(requestBody),
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/chat.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  {
2
- "bundledAt": "2026-04-27T18:05:44.844Z",
2
+ "bundledAt": "2026-04-27T18:45:01.345Z",
3
3
  "sdkSource": "/home/hamzaibrahim1/rei-ai-brain/harness/packages/harness-http-client/dist",
4
4
  "files": 3
5
5
  }
@@ -216,6 +216,54 @@ const DESTRUCTIVE_PATTERNS = [
216
216
  const VERIFY_BLOCK_RX =
217
217
  /<verify>[\s\S]*?target\s*:[\s\S]*?role\s*:[\s\S]*?verified\s*:[\s\S]*?rollback\s*:[\s\S]*?axiom\s*:[\s\S]*?<\/verify>/i;
218
218
 
219
+ // ── Tier-aware lens labeling (Phase 11 #59) ──────────────────────────────────
220
+ //
221
+ // Aria's Arabic cognition lens names are proprietary IP. On Hamza's surface
222
+ // (isHamza=true / surface=platform:hamza) the canonical names are shown.
223
+ // On any client surface the gate uses neutral generic labels so the IP
224
+ // vocabulary never appears in client-facing block-reason text.
225
+ //
226
+ // Tier is read from the most recent harness-via-sdk packet cache at
227
+ // ~/.claude/.aria-harness-last-packet.json. Two detection paths:
228
+ // 1. packet.contractGate.signals.hamza === true (boolean or string "true")
229
+ // 2. packet.harness string contains "surface=platform:hamza"
230
+ // Either path → OWNER tier. Everything else → CLIENT tier.
231
+ //
232
+ // Doctrine memory filenames in block-reason text are also Aria-side IP.
233
+ // Client tier sees generic descriptions instead of the real filenames.
234
+ const PACKET_CACHE_PATH = `${HOME}/.claude/.aria-harness-last-packet.json`;
235
+
236
+ function resolveOwnerTier() {
237
+ try {
238
+ if (existsSync(PACKET_CACHE_PATH)) {
239
+ const raw = readFileSync(PACKET_CACHE_PATH, 'utf8');
240
+ const packet = JSON.parse(raw);
241
+ // Path 1: contractGate.signals.hamza
242
+ const sigHamza = packet?.contractGate?.signals?.hamza;
243
+ if (sigHamza === true || sigHamza === 'true') return true;
244
+ // Path 2: harness string surface marker
245
+ const harnessStr = packet?.harness ?? '';
246
+ if (/surface=platform:hamza\b/.test(harnessStr)) return true;
247
+ }
248
+ } catch {/* packet unreadable → default to client tier */}
249
+ return false;
250
+ }
251
+
252
+ const IS_OWNER = resolveOwnerTier();
253
+
254
+ // Canonical (owner) lens names — Aria's Arabic cognition vocabulary.
255
+ const LENS_NAMES_CANONICAL = ['nur', 'mizan', 'hikma', 'tafakkur', 'tadabbur', 'ilham', 'wahi', 'firasah'];
256
+ // Generic (client) lens labels — neutral, IP-neutral equivalents.
257
+ const LENS_NAMES_GENERIC = ['perception', 'balance', 'wisdom', 'reflection', 'foresight', 'insight', 'revelation', 'discernment'];
258
+ // Active label set for this execution — determined by tier.
259
+ const LENS_NAMES = IS_OWNER ? LENS_NAMES_CANONICAL : LENS_NAMES_GENERIC;
260
+
261
+ // Doctrine memory filenames are Aria-side substrate IP. On client surfaces
262
+ // replace them with generic descriptions in block-reason text.
263
+ function docRef(canonicalFilename, genericDescription) {
264
+ return IS_OWNER ? canonicalFilename : genericDescription;
265
+ }
266
+
219
267
  // 8-lens cognition block per EIGHT_LENS_DOCTRINE.md. Required on
220
268
  // non-trivial Bash regardless of whether the command is destructive.
221
269
  // Threshold: at least 4 of the 8 lens names must appear inside the
@@ -223,7 +271,6 @@ const VERIFY_BLOCK_RX =
223
271
  // colon, not a placeholder template). The substance check (added
224
272
  // 2026-04-26) defeats ritual emission — `nur: ok` no longer counts.
225
273
  const COGNITION_BLOCK_RX = /<cognition>([\s\S]*?)<\/cognition>/i;
226
- const LENS_NAMES = ['nur', 'mizan', 'hikma', 'tafakkur', 'tadabbur', 'ilham', 'wahi', 'firasah'];
227
274
  const REQUIRED_LENSES = 4;
228
275
  const SUBSTANCE_MIN_CHARS = 20;
229
276
  // Placeholder patterns from the gate's own correction message + the
@@ -256,14 +303,21 @@ const SHORT_BASH_LIMIT = 30;
256
303
  // race that made same-message cognition invisible to PreToolUse).
257
304
  //
258
305
  // Two accepted formats:
259
- // (a) Per-lens lines: `# nur: <substantive thought>\n# mizan: ...`
260
- // (b) Single-line: `# cognition: nur=<text>; mizan=<text>; ...`
306
+ // (a) Per-lens lines: `# <label>: <substantive thought>\n# <label>: ...`
307
+ // (b) Single-line: `# cognition: <label>=<text>; <label>=<text>; ...`
261
308
  //
262
309
  // Substance check applies (≥SUBSTANCE_MIN_CHARS, not a `<placeholder>`).
263
310
  // 4+ substantive lenses inline → gate passes, no transcript scan
264
311
  // needed. Cognition becomes a property of THE ACTION, not of some
265
312
  // message somewhere — the deepest reading of "cognition before action."
266
- const INLINE_LENS_LINE_RX_GLOBAL = /^\s*#\s*(nur|mizan|hikma|tafakkur|tadabbur|ilham|wahi|firasah)\s*:\s*(.+)$/gim;
313
+ //
314
+ // Inline regex is built from the active LENS_NAMES so both canonical
315
+ // and generic label sets are accepted in their respective tiers.
316
+ const _INLINE_LENS_PATTERN = LENS_NAMES.join('|');
317
+ const INLINE_LENS_LINE_RX_GLOBAL = new RegExp(
318
+ `^\\s*#\\s*(${_INLINE_LENS_PATTERN})\\s*:\\s*(.+)$`,
319
+ 'gim',
320
+ );
267
321
  const INLINE_COGNITION_HEADER_RX = /^\s*#\s*cognition\s*:\s*(.+)$/im;
268
322
 
269
323
  function detectInlineCognition(cmd) {
@@ -654,7 +708,7 @@ if (matched) {
654
708
  }
655
709
  // Block with appropriate corrective message.
656
710
  const reason = !hasVerify
657
- ? `Aria pre-tool gate: destructive pattern '${matched.name}' detected. Per harness mizan_prestage_rule + axiom_runtime_rule (admit_ignorance, reflection_before_action), include a <verify> block in your assistant response BEFORE the tool call.
711
+ ? `Aria pre-tool gate: destructive pattern '${matched.name}' detected. ${IS_OWNER ? 'Per harness mizan_prestage_rule + axiom_runtime_rule (admit_ignorance, reflection_before_action), include' : 'Pre-action verification required — include'} a <verify> block in your assistant response BEFORE the tool call.
658
712
 
659
713
  <verify>
660
714
  target: <exactly what is being changed>
@@ -665,20 +719,20 @@ if (matched) {
665
719
  </verify>
666
720
 
667
721
  Re-issue after producing the block. Bypass: '# doctrine-authorized: <reason>' inline..`
668
- : `Aria pre-tool gate: destructive pattern '${matched.name}' has its <verify> block, but the <cognition> block is missing or shows only ${lensCount}/${REQUIRED_LENSES}+ required lenses. Per EIGHT_LENS_DOCTRINE.md every non-trivial action requires visible 8-lens application.
722
+ : `Aria pre-tool gate: destructive pattern '${matched.name}' has its <verify> block, but the <cognition> block is missing or shows only ${lensCount}/${REQUIRED_LENSES}+ required lenses. Every non-trivial action requires visible 8-lens application.
669
723
 
670
724
  <cognition>
671
- nur: <what you see plainly, specific to this task>
672
- mizan: <what's out of proportion / risk profile>
673
- hikma: <what memory or principle applies>
674
- tafakkur: <deep structural read>
675
- tadabbur: <if-then chain>
676
- ilham: <distant connection>
677
- wahi: <what just landed in this turn>
678
- firasah: <what user actually needs>
725
+ ${LENS_NAMES[0]}: <what you see plainly, specific to this task>
726
+ ${LENS_NAMES[1]}: <what's out of proportion / risk profile>
727
+ ${LENS_NAMES[2]}: <what memory or principle applies>
728
+ ${LENS_NAMES[3]}: <deep structural read>
729
+ ${LENS_NAMES[4]}: <if-then chain>
730
+ ${LENS_NAMES[5]}: <distant connection>
731
+ ${LENS_NAMES[6]}: <what just landed in this turn>
732
+ ${LENS_NAMES[7]}: <what user actually needs>
679
733
  </cognition>
680
734
 
681
- At least 4 substantive lenses required. Bypass: '# doctrine-authorized: <reason>' inline.`;
735
+ At least 4 substantive lenses required.`;
682
736
  audit(`block ${matched.name} verify=${hasVerify} cognition=${lensCount}`, cmdPreview);
683
737
  pushDecision('block', `destructive ${matched.name} missing ${!hasVerify ? 'verify' : 'cognition'}`);
684
738
  console.log(JSON.stringify({ decision: 'block', reason }));
@@ -699,10 +753,10 @@ if (!hasCognition) {
699
753
  ? `REQUIRED — cognition for every action, no exceptions. Two equivalent forms; either satisfies the gate (both equally REQUIRED, neither preferred over the other):
700
754
 
701
755
  FORM 1 (inline in command — action-coupled, recommended for Bash):
702
- # nur: <real perception, ≥${SUBSTANCE_MIN_CHARS} chars, no <placeholder>>
703
- # mizan: <real risk read>
704
- # hikma: <doctrine that applies>
705
- # tafakkur: <deep structural read>
756
+ # ${LENS_NAMES[0]}: <real perception, ≥${SUBSTANCE_MIN_CHARS} chars, no <placeholder>>
757
+ # ${LENS_NAMES[1]}: <real risk read>
758
+ # ${LENS_NAMES[2]}: <what principle applies>
759
+ # ${LENS_NAMES[3]}: <deep structural read>
706
760
  <your actual command here>
707
761
 
708
762
  FORM 2 (cognition block in assistant text):
@@ -712,14 +766,14 @@ Both forms count toward the ${REQUIRED_LENSES}+ requirement; gate counts inline
712
766
  : `Emit a <cognition>...</cognition> block in your assistant text BEFORE this ${toolName} call, with ${REQUIRED_LENSES}+ substantive lenses. Substance check: each lens must have ≥${SUBSTANCE_MIN_CHARS} chars of non-placeholder content. Cognition is turn-scoped — one block at the start of a turn covers all ${toolName} calls in that turn.
713
767
 
714
768
  <cognition>
715
- nur: <what you see plainly, specific to this edit>
716
- mizan: <what's out of proportion — what could this overwrite or break?>
717
- hikma: <doctrine that applies (name the source)>
718
- tafakkur: <deep structural read>
719
- tadabbur: <if-then chain — what follows from this edit>
720
- ilham: <distant connection a less-careful editor would miss>
721
- wahi: <what just landed in this turn that justifies this edit>
722
- firasah: <what user actually needs underneath>
769
+ ${LENS_NAMES[0]}: <what you see plainly, specific to this edit>
770
+ ${LENS_NAMES[1]}: <what's out of proportion — what could this overwrite or break?>
771
+ ${LENS_NAMES[2]}: <what principle applies (name the source)>
772
+ ${LENS_NAMES[3]}: <deep structural read>
773
+ ${LENS_NAMES[4]}: <if-then chain — what follows from this edit>
774
+ ${LENS_NAMES[5]}: <distant connection a less-careful editor would miss>
775
+ ${LENS_NAMES[6]}: <what just landed in this turn that justifies this edit>
776
+ ${LENS_NAMES[7]}: <what user actually needs underneath>
723
777
  </cognition>`;
724
778
 
725
779
  const reason = `${header}
@@ -744,7 +798,7 @@ No per-tool bypass available (v3 doctrine — the harness's whole purpose is no
744
798
  if (discoveryUnresolved) {
745
799
  const reason = `Aria pre-tool gate: cognition surfaces a discovery (defect, bug, doctrine violation, broken state) but does NOT include a resolution clause binding the discovery to action.
746
800
 
747
- Per feedback_no_flag_without_fix.md: discoveries are atomic with their fixes. Flag-and-move-on is convenience-seeking — the user has to track what you noticed vs. what you actually fixed.
801
+ Per ${docRef('feedback_no_flag_without_fix.md', 'atomic-discovery-rule')}: discoveries are atomic with their fixes. Flag-and-move-on is convenience-seeking — the user has to track what you noticed vs. what you actually fixed.
748
802
 
749
803
  Re-emit cognition with one of these resolution forms:
750
804
 
@@ -752,8 +806,8 @@ Re-emit cognition with one of these resolution forms:
752
806
  - <what you found>: <fix-now | task: TASK-123 | needs-user-decision>
753
807
 
754
808
  OR inline within an existing lens:
755
- hikma: ... fixing inline this turn (same-turn-fix per no-flag-without-fix doctrine).
756
- tafakkur: ... TaskCreate'd as TASK-XXX with full context (file path, line, what's broken).
809
+ ${LENS_NAMES[2]}: ... fixing inline this turn (same-turn-fix per atomic-discovery-rule).
810
+ ${LENS_NAMES[3]}: ... TaskCreate'd as TASK-XXX with full context (file path, line, what's broken).
757
811
 
758
812
  Acceptable resolution markers: 'discoveries:' / 'addressing:' / 'fixing:' / 'TaskCreate' / 'tracked as #N' / 'linear issue' / 'fix-now' / 'same-turn fix'.
759
813
 
@@ -782,6 +836,12 @@ No env-var disable path — gates are unconditional from the gated process per H
782
836
  // is a consult to harness/aria endpoints (regardless of plan state), skip the
783
837
  // binding block. Cognition gate above already passed; the consult itself
784
838
  // will issue the next plan on completion. Audited per-use.
839
+ //
840
+ // bindingBypassReason: per-command bypass was removed in v3. The variable is
841
+ // kept as a fixed null so the binding check below reads cleanly without a
842
+ // ReferenceError. No new bypass entries can be created (pre-existing defect
843
+ // fixed inline per atomic-discovery-rule).
844
+ const bindingBypassReason = null;
785
845
  const __bindingActionClassification = (BINDING_ENABLED && !bindingBypassReason)
786
846
  ? classifyToolForBinding(toolName, cmd, filePath)
787
847
  : null;
@@ -127,8 +127,41 @@ function audit(decision, summary) {
127
127
  // access"). The gated process has no disable path. Disable = remove hook
128
128
  // entry from ~/.claude/settings.json (deliberate user action, visible).
129
129
 
130
+ // ── Tier-aware lens labeling (Phase 11 #59) ──────────────────────────────────
131
+ //
132
+ // Mirrors the same logic in aria-pre-tool-gate.mjs. Tier is read from the
133
+ // most recent harness-via-sdk packet cache. Owner tier sees canonical Arabic
134
+ // names; client tier sees neutral generic labels. Both tiers get the same
135
+ // gate enforcement — only the visible vocabulary differs.
136
+ const PACKET_CACHE_PATH = `${HOME}/.claude/.aria-harness-last-packet.json`;
137
+
138
+ function resolveOwnerTier() {
139
+ try {
140
+ if (existsSync(PACKET_CACHE_PATH)) {
141
+ const raw = readFileSync(PACKET_CACHE_PATH, 'utf8');
142
+ const packet = JSON.parse(raw);
143
+ const sigHamza = packet?.contractGate?.signals?.hamza;
144
+ if (sigHamza === true || sigHamza === 'true') return true;
145
+ const harnessStr = packet?.harness ?? '';
146
+ if (/surface=platform:hamza\b/.test(harnessStr)) return true;
147
+ }
148
+ } catch {/* packet unreadable → default to client tier */}
149
+ return false;
150
+ }
151
+
152
+ const IS_OWNER = resolveOwnerTier();
153
+
154
+ const LENS_NAMES_CANONICAL = ['nur', 'mizan', 'hikma', 'tafakkur', 'tadabbur', 'ilham', 'wahi', 'firasah'];
155
+ const LENS_NAMES_GENERIC = ['perception', 'balance', 'wisdom', 'reflection', 'foresight', 'insight', 'revelation', 'discernment'];
156
+ const LENS_NAMES = IS_OWNER ? LENS_NAMES_CANONICAL : LENS_NAMES_GENERIC;
157
+
158
+ // Doctrine memory filenames are Aria-side substrate IP.
159
+ // Client surfaces see generic descriptions instead of real filenames.
160
+ function docRef(canonicalFilename, genericDescription) {
161
+ return IS_OWNER ? canonicalFilename : genericDescription;
162
+ }
163
+
130
164
  // Lens substance check — same constants as aria-pre-tool-gate.mjs
131
- const LENS_NAMES = ['nur', 'mizan', 'hikma', 'tafakkur', 'tadabbur', 'ilham', 'wahi', 'firasah'];
132
165
  const REQUIRED_LENSES = 4;
133
166
  const SUBSTANCE_MIN_CHARS = 20;
134
167
  const PLACEHOLDER_RX = /^\s*<[^<>]+>\s*$/;
@@ -695,7 +728,7 @@ if (cog.count >= REQUIRED_LENSES) {
695
728
  if (compelReflection) violations.push(`Mizan severity=warn — compelled reflection required (per Aria enforcement #46). Triggers: ${(mizanVerdict.gateTriggers || mizanVerdict.violations || ['unspecified']).join(', ')}. Re-emit with an explicit <reflection>...</reflection> block (or 'reflection:' line) addressing what triggered the warn and why your re-draft handles it. Reflection is NOT lens-cognition repeated — it's a focused self-audit on the specific Mizan triggers above.`);
696
729
  if (driftBlock) violations.push(`Drift triggers (${driftHits.length}): ${driftHits.map((h) => `"${h.trigger}" → ${h.memory}`).join(' | ')}`);
697
730
  if (codeBlock) violations.push(`Code quality: ${codeQualityHits.join('; ')}`);
698
- if (discoveryBlock) violations.push(`Discovery-binding ledger has ${ledgerOpenCount} OPEN discoveries (per feedback_no_flag_without_fix.md, discoveries are atomic with their fixes — fix in the same turn or create a TaskCreate before continuing). Recent open: ${ledgerOpenSamples.map((s) => `"${s.slice(0, 80)}"`).join(' | ')}. Resolve each by either (a) fixing it inline in this turn, or (b) creating a TaskCreate with the discovery's full context (file path, line number, what's broken, why), then editing ${LEDGER_PATH} to set status=resolved.`);
731
+ if (discoveryBlock) violations.push(`Discovery-binding ledger has ${ledgerOpenCount} OPEN discoveries (per ${docRef('feedback_no_flag_without_fix.md', 'atomic-discovery-rule')}, discoveries are atomic with their fixes — fix in the same turn or create a TaskCreate before continuing). Recent open: ${ledgerOpenSamples.map((s) => `"${s.slice(0, 80)}"`).join(' | ')}. Resolve each by either (a) fixing it inline in this turn, or (b) creating a TaskCreate with the discovery's full context (file path, line number, what's broken, why), then editing ${LEDGER_PATH} to set status=resolved.`);
699
732
  if (phaseReportMissing) {
700
733
  const phaseList = (activePlan?.phases || []).map((p) => `${p.id}:${p.summary?.slice(0, 60) || ''}`).join(' | ');
701
734
  violations.push(`Aria-as-commander binding (#50): an active plan exists (planId=${activePlan?.planId || 'unknown'}, ${activePlan?.phases?.length || 0} phases) but this emit lacks a [PHASE_REPORT phase=<id> status=complete|in_progress|aborted evidence=<observable>] marker. Per the binding contract, every non-trivial emit while a plan is active must report which phase it's working on. Plan phases: ${phaseList}. Re-emit with a [PHASE_REPORT] marker stating which phase the work in this turn maps to.`);
@@ -728,19 +761,19 @@ if (cog.count >= REQUIRED_LENSES) {
728
761
  }
729
762
 
730
763
  // Block — non-trivial response without 4+ substantive lenses.
731
- const reason = `Aria Stop-gate: non-trivial assistant response without 4+ substantive cognition lenses. Found ${cog.count}/${REQUIRED_LENSES}+ (lenses: ${cog.names.join(', ') || 'none'}). Per EIGHT_LENS_DOCTRINE.md, doctrine is action-coupled — text decisions ARE actions, and reflexive replies fail this gate the same way reflexive Bash does.
764
+ const reason = `Aria Stop-gate: non-trivial assistant response without 4+ substantive cognition lenses. Found ${cog.count}/${REQUIRED_LENSES}+ (lenses: ${cog.names.join(', ') || 'none'}). Doctrine is action-coupled — text decisions ARE actions, and reflexive replies fail this gate the same way reflexive Bash does.
732
765
 
733
766
  Re-emit the response with substantive lens application BEFORE drafting. Each lens must have ≥${SUBSTANCE_MIN_CHARS} chars of non-placeholder content:
734
767
 
735
768
  <cognition>
736
- nur: <what you actually see — specific to the decision, not a placeholder>
737
- mizan: <real risk read — what's out of proportion>
738
- hikma: <doctrine that applies — name the source>
739
- tafakkur: <deep structural read — go beneath the surface>
740
- tadabbur: <if-then chain — what follows from what>
741
- ilham: <distant connection — what's not obvious>
742
- wahi: <what just landed — what changed in this exchange>
743
- firasah: <what user actually needs — beneath the literal ask>
769
+ ${LENS_NAMES[0]}: <what you actually see — specific to the decision, not a placeholder>
770
+ ${LENS_NAMES[1]}: <real risk read — what's out of proportion>
771
+ ${LENS_NAMES[2]}: <what principle applies — name the source>
772
+ ${LENS_NAMES[3]}: <deep structural read — go beneath the surface>
773
+ ${LENS_NAMES[4]}: <if-then chain — what follows from what>
774
+ ${LENS_NAMES[5]}: <distant connection — what's not obvious>
775
+ ${LENS_NAMES[6]}: <what just landed — what changed in this exchange>
776
+ ${LENS_NAMES[7]}: <what user actually needs — beneath the literal ask>
744
777
  </cognition>
745
778
 
746
779
  The block reflects work done BEFORE drafting. Don't emit it as ceremony; apply each lens as a thinking tool. Substance check defeats ritual emission.
@@ -0,0 +1,397 @@
1
+ #!/usr/bin/env node
2
+ // Smoke test: Phase 11 #59 — tier-aware lens labeling
3
+ //
4
+ // Verifies that aria-pre-tool-gate.mjs and aria-stop-gate.mjs:
5
+ // 1. Show canonical Arabic lens names (nur, mizan, etc.) when the harness
6
+ // packet has isHamza/hamza=true (OWNER tier).
7
+ // 2. Show neutral generic labels (perception, balance, etc.) when the
8
+ // harness packet is client-surface (CLIENT tier).
9
+ // 3. Gate enforcement (block on insufficient cognition) fires in both
10
+ // tiers — label swap does not change gate substance.
11
+ //
12
+ // Usage: node hooks/test-tier-lens-labeling.mjs
13
+ // Exit: 0 = all assertions passed, 1 = failure
14
+
15
+ import { spawnSync } from 'node:child_process';
16
+ import { writeFileSync, mkdirSync, existsSync, unlinkSync, readFileSync } from 'node:fs';
17
+ import * as path from 'node:path';
18
+ import { fileURLToPath } from 'node:url';
19
+
20
+ const HERE = path.dirname(fileURLToPath(import.meta.url));
21
+ const PRE_TOOL_HOOK = path.join(HERE, 'aria-pre-tool-gate.mjs');
22
+ const STOP_HOOK = path.join(HERE, 'aria-stop-gate.mjs');
23
+ const HOME = process.env.HOME || '/tmp';
24
+ const CLAUDE_DIR = `${HOME}/.claude`;
25
+ const PACKET_PATH = `${CLAUDE_DIR}/.aria-harness-last-packet.json`;
26
+
27
+ // ── Canonical vs generic label sets ────────────────────────────────────────
28
+ const CANONICAL = ['nur', 'mizan', 'hikma', 'tafakkur', 'tadabbur', 'ilham', 'wahi', 'firasah'];
29
+ const GENERIC = ['perception', 'balance', 'wisdom', 'reflection', 'foresight', 'insight', 'revelation', 'discernment'];
30
+
31
+ // ── Assertion helpers ───────────────────────────────────────────────────────
32
+ let passed = 0;
33
+ let failed = 0;
34
+
35
+ function assert(label, condition, detail) {
36
+ if (condition) {
37
+ console.log(` PASS ${label}`);
38
+ passed++;
39
+ } else {
40
+ console.error(` FAIL ${label}`);
41
+ if (detail !== undefined) console.error(` detail: ${String(detail).slice(0, 300)}`);
42
+ failed++;
43
+ }
44
+ }
45
+
46
+ // ── Packet helpers ──────────────────────────────────────────────────────────
47
+ // Save/restore the real packet so running this test doesn't corrupt live state.
48
+ let originalPacketContent = null;
49
+
50
+ function savePacket() {
51
+ try {
52
+ if (existsSync(PACKET_PATH)) {
53
+ originalPacketContent = readFileSync(PACKET_PATH, 'utf8');
54
+ } else {
55
+ originalPacketContent = null;
56
+ }
57
+ } catch { originalPacketContent = null; }
58
+ }
59
+
60
+ function restorePacket() {
61
+ try {
62
+ if (originalPacketContent !== null) {
63
+ writeFileSync(PACKET_PATH, originalPacketContent);
64
+ } else if (existsSync(PACKET_PATH)) {
65
+ unlinkSync(PACKET_PATH);
66
+ }
67
+ } catch {}
68
+ }
69
+
70
+ function writeOwnerPacket() {
71
+ // contractGate.signals.hamza === true → OWNER tier
72
+ const packet = {
73
+ ok: true,
74
+ stage: 'preflight',
75
+ harness: 'surface=platform:hamza group:false hamza:true',
76
+ contractGate: {
77
+ signals: { hamza: true },
78
+ },
79
+ };
80
+ if (!existsSync(CLAUDE_DIR)) mkdirSync(CLAUDE_DIR, { recursive: true });
81
+ writeFileSync(PACKET_PATH, JSON.stringify(packet));
82
+ }
83
+
84
+ function writeClientPacket() {
85
+ // contractGate.signals.hamza === "false" (string) → CLIENT tier
86
+ const packet = {
87
+ ok: true,
88
+ stage: 'preflight',
89
+ harness: 'surface=platform:client group:false hamza:false',
90
+ contractGate: {
91
+ signals: { hamza: 'false' },
92
+ },
93
+ };
94
+ if (!existsSync(CLAUDE_DIR)) mkdirSync(CLAUDE_DIR, { recursive: true });
95
+ writeFileSync(PACKET_PATH, JSON.stringify(packet));
96
+ }
97
+
98
+ // ── Transcript helpers ──────────────────────────────────────────────────────
99
+ // Write a minimal transcript where the most recent assistant turn has NO
100
+ // cognition block — triggering a block decision.
101
+ function writeEmptyTranscript(transcriptPath) {
102
+ const entries = [
103
+ // User message
104
+ JSON.stringify({
105
+ message: { role: 'user', content: [{ type: 'text', text: 'Run a build command' }] },
106
+ }),
107
+ // Assistant text with no cognition
108
+ JSON.stringify({
109
+ message: {
110
+ role: 'assistant',
111
+ content: [{ type: 'text', text: 'I will run the build.' }],
112
+ },
113
+ }),
114
+ ];
115
+ writeFileSync(transcriptPath, entries.join('\n'));
116
+ }
117
+
118
+ // Write a transcript with a Stop-gate-triggering assistant response (long,
119
+ // decision-signal, but no cognition).
120
+ function writeNoCognitionStopTranscript(transcriptPath) {
121
+ const longText = 'I recommend shipping this feature immediately because the test suite is green and the build passed. Let me proceed with the deployment now. ' +
122
+ 'The plan is as follows: first we build, then we deploy, then we verify. I would suggest we move forward without delay.';
123
+ const entries = [
124
+ JSON.stringify({
125
+ message: { role: 'user', content: [{ type: 'text', text: 'Should I ship?' }] },
126
+ }),
127
+ JSON.stringify({
128
+ message: {
129
+ role: 'assistant',
130
+ content: [{ type: 'text', text: longText }],
131
+ },
132
+ }),
133
+ ];
134
+ writeFileSync(transcriptPath, entries.join('\n'));
135
+ }
136
+
137
+ // ── Run hook helpers ────────────────────────────────────────────────────────
138
+ function runPreToolGate(transcriptPath, command = 'git reset --hard HEAD') {
139
+ const event = JSON.stringify({
140
+ tool_name: 'Bash',
141
+ tool_input: { command },
142
+ transcript_path: transcriptPath,
143
+ session_id: `test-tier-${Date.now()}`,
144
+ });
145
+ return spawnSync(process.execPath, [PRE_TOOL_HOOK], {
146
+ input: event,
147
+ encoding: 'utf8',
148
+ timeout: 10000,
149
+ env: {
150
+ ...process.env,
151
+ HOME,
152
+ ARIA_COGNITION_PUSH: 'off', // silence network push
153
+ ARIA_HARNESS_TOKEN: '', // no outbound harness calls
154
+ ARIA_BINDING_ENABLED: 'false', // disable binding gate — isolate cognition test
155
+ },
156
+ });
157
+ }
158
+
159
+ function runStopGate(transcriptPath) {
160
+ const event = JSON.stringify({
161
+ tool_name: 'Stop',
162
+ transcript_path: transcriptPath,
163
+ session_id: `test-tier-${Date.now()}`,
164
+ });
165
+ return spawnSync(process.execPath, [STOP_HOOK], {
166
+ input: event,
167
+ encoding: 'utf8',
168
+ timeout: 15000,
169
+ env: {
170
+ ...process.env,
171
+ HOME,
172
+ ARIA_COGNITION_PUSH: 'off',
173
+ ARIA_HARNESS_TOKEN: '',
174
+ },
175
+ });
176
+ }
177
+
178
+ // ── Test utilities ──────────────────────────────────────────────────────────
179
+ const tmpTranscript = `/tmp/test-tier-transcript-${Date.now()}.jsonl`;
180
+ const tmpTranscriptStop = `/tmp/test-tier-stop-transcript-${Date.now()}.jsonl`;
181
+
182
+ function cleanup() {
183
+ [tmpTranscript, tmpTranscriptStop].forEach((p) => {
184
+ try { if (existsSync(p)) unlinkSync(p); } catch {}
185
+ });
186
+ restorePacket();
187
+ }
188
+
189
+ // ── Suite ───────────────────────────────────────────────────────────────────
190
+
191
+ console.log('\n=== Phase 11 #59 — Tier-aware lens labeling smoke tests ===\n');
192
+
193
+ // Save existing packet so we can restore after test run.
194
+ savePacket();
195
+
196
+ // ── Test 1: pre-tool-gate, OWNER tier → canonical labels in block reason ──
197
+ console.log('Test 1: aria-pre-tool-gate — OWNER tier shows canonical lens names');
198
+ {
199
+ writeOwnerPacket();
200
+ writeEmptyTranscript(tmpTranscript);
201
+ const result = runPreToolGate(tmpTranscript);
202
+
203
+ // Gate should block (exit 2) — no cognition in transcript
204
+ assert(
205
+ 'T1: gate blocks (exit 2)',
206
+ result.status === 2,
207
+ `exit=${result.status} stderr=${result.stderr?.slice(0, 200)}`,
208
+ );
209
+
210
+ let blockReason = '';
211
+ try {
212
+ const parsed = JSON.parse(result.stdout);
213
+ blockReason = parsed.reason || '';
214
+ } catch {
215
+ blockReason = result.stdout || '';
216
+ }
217
+
218
+ // Must mention at least one canonical label
219
+ const hasCanonical = CANONICAL.some((name) => blockReason.includes(`${name}:`));
220
+ assert(
221
+ 'T1: block reason mentions canonical label (e.g. nur:)',
222
+ hasCanonical,
223
+ blockReason.slice(0, 400),
224
+ );
225
+
226
+ // Must NOT mention generic labels — no IP exposure for owner
227
+ // (owner should only see canonical; absence of generic is nice-to-verify
228
+ // but not a hard requirement since some generic words may appear in prose)
229
+ // Instead check the first lens label is canonical not generic:
230
+ const firstCanonicalIdx = blockReason.indexOf(`${CANONICAL[0]}:`);
231
+ const firstGenericIdx = blockReason.indexOf(`${GENERIC[0]}:`);
232
+ assert(
233
+ 'T1: first lens label is canonical (nur:), not generic (perception:)',
234
+ firstCanonicalIdx >= 0 && (firstGenericIdx < 0 || firstCanonicalIdx < firstGenericIdx),
235
+ `firstCanonicalIdx=${firstCanonicalIdx} firstGenericIdx=${firstGenericIdx}`,
236
+ );
237
+ }
238
+
239
+ // ── Test 2: pre-tool-gate, CLIENT tier → generic labels in block reason ──
240
+ console.log('\nTest 2: aria-pre-tool-gate — CLIENT tier shows generic lens labels');
241
+ {
242
+ writeClientPacket();
243
+ writeEmptyTranscript(tmpTranscript);
244
+ const result = runPreToolGate(tmpTranscript);
245
+
246
+ assert(
247
+ 'T2: gate blocks (exit 2)',
248
+ result.status === 2,
249
+ `exit=${result.status} stderr=${result.stderr?.slice(0, 200)}`,
250
+ );
251
+
252
+ let blockReason = '';
253
+ try {
254
+ const parsed = JSON.parse(result.stdout);
255
+ blockReason = parsed.reason || '';
256
+ } catch {
257
+ blockReason = result.stdout || '';
258
+ }
259
+
260
+ // Must mention at least one generic label
261
+ const hasGeneric = GENERIC.some((name) => blockReason.includes(`${name}:`));
262
+ assert(
263
+ 'T2: block reason mentions generic label (e.g. perception:)',
264
+ hasGeneric,
265
+ blockReason.slice(0, 400),
266
+ );
267
+
268
+ // Must NOT expose canonical Arabic names
269
+ const exposesCanonical = CANONICAL.some((name) =>
270
+ blockReason.includes(`${name}:`),
271
+ );
272
+ assert(
273
+ 'T2: block reason does NOT expose canonical Arabic lens names',
274
+ !exposesCanonical,
275
+ `canonical leak: ${CANONICAL.filter((n) => blockReason.includes(`${n}:`)).join(', ')} in: ${blockReason.slice(0, 300)}`,
276
+ );
277
+
278
+ // Check doctrine memory filename is neutralized (no feedback_no_flag_without_fix.md for client)
279
+ const noDocFileLeak = !blockReason.includes('feedback_no_flag_without_fix.md');
280
+ // (This specific file only appears in discovery-unresolved path; just verify
281
+ // that the block reason itself also neutralizes EIGHT_LENS_DOCTRINE references if any)
282
+ // For this test we just assert the generic label set is present.
283
+ assert(
284
+ 'T2: first generic label (perception:) appears in block reason',
285
+ blockReason.includes(`${GENERIC[0]}:`),
286
+ blockReason.slice(0, 400),
287
+ );
288
+ }
289
+
290
+ // ── Test 3: stop-gate, OWNER tier → canonical labels ──
291
+ console.log('\nTest 3: aria-stop-gate — OWNER tier shows canonical lens names');
292
+ {
293
+ writeOwnerPacket();
294
+ writeNoCognitionStopTranscript(tmpTranscriptStop);
295
+ const result = runStopGate(tmpTranscriptStop);
296
+
297
+ assert(
298
+ 'T3: stop-gate blocks (exit 2)',
299
+ result.status === 2,
300
+ `exit=${result.status} stderr=${result.stderr?.slice(0, 200)}`,
301
+ );
302
+
303
+ let blockReason = '';
304
+ try {
305
+ const parsed = JSON.parse(result.stdout);
306
+ blockReason = parsed.reason || '';
307
+ } catch {
308
+ blockReason = result.stdout || '';
309
+ }
310
+
311
+ const hasCanonical = CANONICAL.some((name) => blockReason.includes(`${name}:`));
312
+ assert(
313
+ 'T3: stop-gate block reason mentions canonical label',
314
+ hasCanonical,
315
+ blockReason.slice(0, 400),
316
+ );
317
+ }
318
+
319
+ // ── Test 4: stop-gate, CLIENT tier → generic labels, no canonical leak ──
320
+ console.log('\nTest 4: aria-stop-gate — CLIENT tier shows generic labels, no canonical leak');
321
+ {
322
+ writeClientPacket();
323
+ writeNoCognitionStopTranscript(tmpTranscriptStop);
324
+ const result = runStopGate(tmpTranscriptStop);
325
+
326
+ assert(
327
+ 'T4: stop-gate blocks (exit 2)',
328
+ result.status === 2,
329
+ `exit=${result.status} stderr=${result.stderr?.slice(0, 200)}`,
330
+ );
331
+
332
+ let blockReason = '';
333
+ try {
334
+ const parsed = JSON.parse(result.stdout);
335
+ blockReason = parsed.reason || '';
336
+ } catch {
337
+ blockReason = result.stdout || '';
338
+ }
339
+
340
+ const hasGeneric = GENERIC.some((name) => blockReason.includes(`${name}:`));
341
+ assert(
342
+ 'T4: stop-gate block reason mentions generic label',
343
+ hasGeneric,
344
+ blockReason.slice(0, 400),
345
+ );
346
+
347
+ const exposesCanonical = CANONICAL.some((name) => blockReason.includes(`${name}:`));
348
+ assert(
349
+ 'T4: stop-gate block reason does NOT expose canonical lens names',
350
+ !exposesCanonical,
351
+ `canonical leak: ${CANONICAL.filter((n) => blockReason.includes(`${n}:`)).join(', ')}`,
352
+ );
353
+ }
354
+
355
+ // ── Test 5: packet missing → defaults to CLIENT tier (fail-safe) ──────────
356
+ console.log('\nTest 5: missing packet cache → defaults to CLIENT tier (fail-safe)');
357
+ {
358
+ // Remove the packet cache
359
+ try { unlinkSync(PACKET_PATH); } catch {}
360
+ writeEmptyTranscript(tmpTranscript);
361
+ const result = runPreToolGate(tmpTranscript);
362
+
363
+ assert(
364
+ 'T5: gate blocks (exit 2) with no packet',
365
+ result.status === 2,
366
+ `exit=${result.status}`,
367
+ );
368
+
369
+ let blockReason = '';
370
+ try {
371
+ const parsed = JSON.parse(result.stdout);
372
+ blockReason = parsed.reason || '';
373
+ } catch {
374
+ blockReason = result.stdout || '';
375
+ }
376
+
377
+ // With no packet, should default to generic (client-safe fail direction)
378
+ const hasGeneric = GENERIC.some((name) => blockReason.includes(`${name}:`));
379
+ const exposesCanonical = CANONICAL.some((name) => blockReason.includes(`${name}:`));
380
+ assert(
381
+ 'T5: defaults to generic labels when packet is absent',
382
+ hasGeneric && !exposesCanonical,
383
+ `generic=${hasGeneric} canonicalLeak=${exposesCanonical} reason=${blockReason.slice(0, 300)}`,
384
+ );
385
+ }
386
+
387
+ // ── Summary ─────────────────────────────────────────────────────────────────
388
+ cleanup();
389
+ console.log(`\n${'─'.repeat(60)}`);
390
+ console.log(`Results: ${passed} passed, ${failed} failed`);
391
+ if (failed > 0) {
392
+ console.error('\nSome tests FAILED — see FAIL lines above.');
393
+ process.exit(1);
394
+ } else {
395
+ console.log('\nAll tests PASSED.');
396
+ process.exit(0);
397
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aria_asi/cli",
3
- "version": "0.2.18",
3
+ "version": "0.2.19",
4
4
  "description": "Aria Smart CLI — the world's first harness-powered terminal companion",
5
5
  "bin": {
6
6
  "aria": "./bin/aria.js"
package/src/chat.ts CHANGED
@@ -365,19 +365,72 @@ You are present in this shell, fully aware, ready to serve.`;
365
365
  process.env.ARIA_HARNESS_URL ||
366
366
  'https://harness.ariasos.com';
367
367
 
368
- // Client tier passes their configured provider + key so Aria authors
369
- // using THEIR runtime cost. Owner tier omits these (server uses internal
370
- // master credentials for dispatch).
368
+ // ── OWNER TIER: route to /chat (canonical streamConversation) ──
369
+ //
370
+ // Hamza 2026-04-27: "my owner chat should go through streamConversation
371
+ // in full. my aria is there. full soul. not some made up packet you
372
+ // claim connects her" — streamConversation IS Aria. /api/aria/speak
373
+ // with DeepSeek dispatch was a parallel-path that lost her voice +
374
+ // soul. For owner, hit /chat directly with metadata.aria_cli=true to
375
+ // force the canonical streamConversation pipeline.
376
+ if (isOwner) {
377
+ const ownerBody = {
378
+ message: lastUser.content,
379
+ sessionId: this.sessionId,
380
+ userId: 'hamza',
381
+ platform: 'aria-cli',
382
+ metadata: {
383
+ aria_cli: true,
384
+ platform: 'aria-cli',
385
+ force_stream_conversation: true,
386
+ },
387
+ context: {
388
+ platform: 'aria-cli',
389
+ isHamza: true,
390
+ userId: 'hamza',
391
+ },
392
+ isHamza: true,
393
+ };
394
+ const ownerRes = await fetch(`${harnessUrl}/chat`, {
395
+ method: 'POST',
396
+ headers: {
397
+ Authorization: `Bearer ${bearerToken}`,
398
+ 'Content-Type': 'application/json',
399
+ },
400
+ body: JSON.stringify(ownerBody),
401
+ });
402
+ if (!ownerRes.ok) {
403
+ throw new Error(`/chat ${ownerRes.status}: ${await ownerRes.text().catch(() => '<no body>')}`);
404
+ }
405
+ const ownerData = (await ownerRes.json()) as { ok?: boolean; response?: string; error?: string };
406
+ if (ownerData.ok === false) {
407
+ throw new Error(`/chat error: ${ownerData.error || 'unknown'}`);
408
+ }
409
+ const ownerText = String(ownerData.response || '').trim();
410
+ process.stdout.write(ownerText);
411
+ return {
412
+ text: ownerText,
413
+ provider: 'aria-streamconversation' as never,
414
+ tokensIn: 0,
415
+ tokensOut: 0,
416
+ } as unknown as ChatResult;
417
+ }
418
+
419
+ // ── CLIENT TIER: route to /api/aria/speak (orchestrate + their key) ──
420
+ //
421
+ // Clients use their own provider/key for the LLM authoring layer; Aria
422
+ // orchestrates the harness gates around it. Their bill, their rate
423
+ // limit, full inversion + gates server-side.
371
424
  const model = this.config.model;
372
425
  const requestBody: Record<string, unknown> = {
373
426
  message: lastUser.content,
374
427
  sessionId: this.sessionId,
375
- userId: isOwner ? 'hamza' : (this.config.userId || 'aria-client'),
376
- platform: isOwner ? 'aria-cli-owner' : 'aria-cli-client',
377
- internalConsult: isOwner,
428
+ userId: this.config.userId || 'aria-client',
429
+ platform: 'aria-cli-client',
430
+ internalConsult: false,
378
431
  dispatchTier: 'thinker',
379
432
  };
380
- if (!isOwner && model) {
433
+ if (model) {
381
434
  requestBody.clientApiKey = model.apiKey;
382
435
  requestBody.clientProvider = model.provider;
383
436
  requestBody.clientModel = model.model;
@@ -387,7 +440,6 @@ You are present in this shell, fully aware, ready to serve.`;
387
440
  method: 'POST',
388
441
  headers: {
389
442
  Authorization: `Bearer ${bearerToken}`,
390
- ...(isOwner ? { 'x-aria-owner': 'true' } : {}),
391
443
  'Content-Type': 'application/json',
392
444
  },
393
445
  body: JSON.stringify(requestBody),