@aria_asi/cli 0.2.18 → 0.2.20

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":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAsB,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC9H,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAwB,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,0EAA0E;AAC1E,kFAAkF;AAClF,uEAAuE;AACvE,6EAA6E;AAC7E,yEAAyE;AACzE,mDAAmD;AACnD,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,0DAA0D;AAC1D,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAQlC,MAAM,OAAO,QAAQ;IACX,MAAM,CAAa;IACnB,OAAO,GAAc,EAAE,CAAC;IACxB,SAAS,CAAS;IAClB,aAAa,GAAG,KAAK,CAAC;IACtB,SAAS,CAAmB;IAEpC,YAAY,MAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,UAAU,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,yEAAyE;QACzE,mEAAmE;QACnE,+DAA+D;QAC/D,4DAA4D;QAC5D,gEAAgE;QAChE,+DAA+D;QAC/D,+DAA+D;QAC/D,0CAA0C;QAC1C,MAAM,OAAO,GAAG;YACd,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,UAAU;YACpB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM;YACpC,YAAY,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,CAAC;YAC5E,OAAO,EAAE;gBACP,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;gBAClB,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,OAAO,CAAC,OAAO;aAC7B;SACF,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACrE,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YACrD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;YAChE,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,UAAU,CAAC,IAAI,CAAC,eAAe,qBAAqB,MAAM,WAAW,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;YACzI,CAAC;QACH,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEjD,oEAAoE;QACpE,iEAAiE;QACjE,mEAAmE;QACnE,iEAAiE;QACjE,sEAAsE;QACtE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;QAC/E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;gBAC7D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,MAAM,CAAC,MAAM,eAAe,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,MAAM,IAAI,CAAC,CAAC;QAChI,CAAC;QAED,MAAM,EAAE,GAAG,eAAe,CAAC;YACzB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QAEH,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACnB,EAAE,CAAC,MAAM,EAAE,CAAC;QAEZ,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,EAAE,CAAC,MAAM,EAAE,CAAC;gBACZ,SAAS;YACX,CAAC;YAED,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;gBACpC,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACnC,EAAE,CAAC,MAAM,EAAE,CAAC;gBACZ,SAAS;YACX,CAAC;YAED,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,IAAI,MAAM,EAAE,CAAC,CAAC;gBACpE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC;gBACnE,EAAE,CAAC,MAAM,EAAE,CAAC;gBACZ,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;YACvC,CAAC;YAED,EAAE,CAAC,MAAM,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,SAAiB;QAC3C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAEtD,MAAM,QAAQ,GAAc;YAC1B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE;YAC7C,GAAG,IAAI,CAAC,OAAO;YACf,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;SACrC,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QAExD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE3B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC;YAEjC,sEAAsE;YACtE,oEAAoE;YACpE,qEAAqE;YACrE,iBAAiB;YACjB,gCAAgC;YAChC,uDAAuD;YACvD,oEAAoE;YACpE,oEAAoE;YACpE,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC;gBACvC,IAAI,EAAE,YAAY;gBAClB,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC;YAEH,IAAI,eAAe,GAAG,YAAY,CAAC;YACnC,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACnD,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,8BAA8B,WAAW,CAAC,QAAQ,EAAE;oBACpD,CAAC,UAAU,CAAC,CAAC,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrD,IAAI,CACL,CAAC;gBACF,IAAI,WAAW,CAAC,QAAQ,KAAK,OAAO,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;oBAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,WAAW,CAAC,SAAS,IAAI,CAAC,CAAC;oBAClE,eAAe,GAAG,WAAW,CAAC,SAAS,CAAC;gBAC1C,CAAC;YACH,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC,WAAW,EAAE,CAAC;YAEnB,mEAAmE;YACnE,8DAA8D;YAC9D,gEAAgE;YAChE,gEAAgE;YAChE,oEAAoE;YACpE,MAAM,cAAc,GAAG,WAAW,IAAI,WAAW,CAAC,QAAQ,KAAK,MAAM;gBACnE,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpC,CAAC,CAAC,SAAS,CAAC;YACd,eAAe,CAAC;gBACd,OAAO,EAAE,SAAS;gBAClB,QAAQ,EAAE,eAAe;gBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gBAC1B,cAAc;aACf,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAErB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,2CAA2C;YAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACnB,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,WAAmB;QACnD,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC;QAC1F,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC/C,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,uBAAuB,MAAM,EAAE,CAAC,CAAC;QAEzD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC;QAEtD,kEAAkE;QAClE,gEAAgE;QAChE,8DAA8D;QAC9D,8DAA8D;QAC9D,gDAAgD;QAChD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;YACpC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YAC5E,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC;YACjC,OAAO,EAAE,WAAW;YACpB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,YAAY;SACb,CAAC,CAAC;QAEH,IAAI,OAAO,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,kEAAkE;YAClE,gEAAgE;YAChE,8DAA8D;YAC9D,+DAA+D;YAC/D,wDAAwD;YACxD,IAAI,OAAO,CAAC,YAAY,EAAE,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,2BAA2B,OAAO,CAAC,MAAM,CAAC,MAAM,YAAY,OAAO,CAAC,YAAY,CAAC,UAAU,YAAY,OAAO,CAAC,YAAY,CAAC,YAAY,2BAA2B,YAAY,IAAI,CACpL,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;YACvC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,CAAC;QAED,OAAO;YACL,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YACjC,OAAO;YACP,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC;IACJ,CAAC;IAEO,kBAAkB;QACxB,OAAO;;;;;;;;;;;;;;;;;;;;;;;4DAuBiD,CAAC;IAC3D,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,IAAI,CAAC;YACH,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;YAClF,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAChD,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,WAAmB;QAChD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK;gBAAE,OAAO,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,iDAAiD,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAC5E,UAAU,CACX,CAAC;YACF,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,EAAE;IACF,+EAA+E;IAC/E,wEAAwE;IACxE,EAAE;IACF,sEAAsE;IACtE,sEAAsE;IACtE,iCAAiC;IACjC,oEAAoE;IACpE,6EAA6E;IAC7E,yEAAyE;IACzE,sDAAsD;IACtD,2EAA2E;IAC3E,0EAA0E;IAC1E,EAAE;IACF,uEAAuE;IACvE,uEAAuE;IAC/D,KAAK,CAAC,sBAAsB,CAAC,QAAmB;QACtD,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QAEnC,4EAA4E;QAC5E,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QACvE,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1D,IAAI,CAAC,EAAE,CAAC;gBACN,WAAW,GAAG,CAAC,CAAC;gBAChB,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;YACrE,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC9D,8DAA8D;oBAC9D,iEAAiE;oBACjE,2DAA2D;oBAC3D,WAAW,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC/D,CAAC;gBAAC,MAAM,CAAC,CAAA,2CAA2C,CAAA,CAAC;YACvD,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,4DAA4D;QAC5D,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QAE9B,MAAM,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE3B,MAAM,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,gBAAgB;YAC5B,6BAA6B,CAAC;QAEhC,qEAAqE;QACrE,yEAAyE;QACzE,oCAAoC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAChC,MAAM,WAAW,GAA4B;YAC3C,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,aAAa,CAAC;YACjE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,iBAAiB;YACxD,eAAe,EAAE,OAAO;YACxB,YAAY,EAAE,SAAS;SACxB,CAAC;QACF,IAAI,CAAC,OAAO,IAAI,KAAK,EAAE,CAAC;YACtB,WAAW,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;YACxC,WAAW,CAAC,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC5C,WAAW,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;QACxC,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,iBAAiB,EAAE;YACtD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,WAAW,EAAE;gBACtC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9C,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,MAAM,KAAK,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACjG,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAQ7B,CAAC;QAEF,IAAI,IAAI,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC;QAChF,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAChE,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,8BAA8B,CAAC;YACzF,MAAM,IAAI,KAAK,CAAC,kBAAkB,MAAM,EAAE,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE3B,OAAO;YACL,IAAI;YACJ,QAAQ,EAAE,oBAAoB,IAAI,CAAC,SAAS,IAAI,SAAS,GAAY;YACrE,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,CAAC;SACY,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,QAAmB;QAC9C,+DAA+D;QAC/D,wEAAwE;QACxE,uEAAuE;QACvE,0DAA0D;QAC1D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QAC/D,IAAI,UAAU;YAAE,OAAO,UAAU,CAAC;QAElC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAE7F,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAElD,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,WAAW,CAAC;QAEhF,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAClE,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,MAAM,YAAY,CAC/B,QAAQ,EACR,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,KAAK,EACX,CAAC,KAAa,EAAE,EAAE;gBAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC5B,QAAQ,IAAI,KAAK,CAAC;YACpB,CAAC,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAC;YACF,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACtD,CAAC;QAED,OAAO,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IAEO,WAAW,CAAC,QAAsB;QACxC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAClD,KAAK,WAAW,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACxD,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAClD,KAAK,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACtD,KAAK,YAAY,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YAC1D,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAClD,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,IAAkB;QACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC7C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,eAAe,IAAI,KAAK,CAAC,CAAC;YACnD,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACjD,CAAC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,QAAsB;QACpD,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;gBAClD,OAAO,GAAG,CAAC,UAAU,CAAC;YACxB,CAAC;YACD,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;gBACrD,OAAO,GAAG,CAAC,UAAU,CAAC;YACxB,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,eAAe,QAAQ,KAAK,CAAC,CAAC;gBACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBAChD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;oBACvD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACrB,OAAO,MAAM,CAAC;gBAChB,CAAC,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,6DAA6D;IAC7D,6DAA6D;IAC7D,iEAAiE;IACjE,mEAAmE;IACnE,+DAA+D;IAC/D,sEAAsE;IAC9D,WAAW;QACjB,yCAAyC;IAC3C,CAAC;CACF"}
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-27T21:19:23.449Z",
3
3
  "sdkSource": "/home/hamzaibrahim1/rei-ai-brain/harness/packages/harness-http-client/dist",
4
4
  "files": 3
5
5
  }
package/dist/sdk/index.js CHANGED
@@ -80,8 +80,7 @@ export class HTTPHarnessClient {
80
80
  stage: 'preflight',
81
81
  actor: 'harness-http-client',
82
82
  system: 'harness-http-client',
83
- platform: 'client',
84
- isHamza: false,
83
+ platform: 'harness-http-client',
85
84
  };
86
85
  const finalBody = bodyOverride ? { ...defaultBody, ...bodyOverride } : defaultBody;
87
86
  const res = await this.fetchWithRetry(this.harnessPacketUrl, {
@@ -189,7 +189,18 @@ async function tryViaSdk(baseUrl, apiKey) {
189
189
  apiKey,
190
190
  harnessPacketUrl: `${baseUrl}/api/harness/codex`,
191
191
  });
192
- const wrapped = await client.getHarnessPacket();
192
+ // Pass a bodyOverride that does NOT include isHamza:false. The server
193
+ // identifies owner tier from the Bearer token (isMasterTokenRequest).
194
+ // Hardcoding isHamza:false in the body would override that server-side
195
+ // signal and produce hamza:false in the packet even for master-token callers.
196
+ const bodyOverride = {
197
+ message: isTurn ? 'Claude turn refresh — harness via SDK' : 'Claude session start — harness via SDK',
198
+ stage: isTurn ? 'checkpoint' : 'preflight',
199
+ actor: 'claude-code',
200
+ system: 'claude-coding-agent',
201
+ platform: 'harness-http-client',
202
+ };
203
+ const wrapped = await client.getHarnessPacket(bodyOverride);
193
204
  const json = wrapped.packet;
194
205
  if (json && json.ok === false) throw new Error(`ok=false: ${json.error || 'unknown'}`);
195
206
  return { json, raw: JSON.stringify(json) };
@@ -216,6 +216,57 @@ 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 line contains hamza:true) 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 "hamza:true" in the surface line
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 — the actual format is
245
+ // "surface=platform:<X> group:<Y> hamza:true chat_type:<Z>" so we
246
+ // match hamza:true in the surface line, not "platform:hamza" (which
247
+ // was a legacy incorrect pattern that never matched real packets).
248
+ const harnessStr = packet?.harness ?? '';
249
+ if (/\bhamza:true\b/.test(harnessStr)) return true;
250
+ }
251
+ } catch {/* packet unreadable → default to client tier */}
252
+ return false;
253
+ }
254
+
255
+ const IS_OWNER = resolveOwnerTier();
256
+
257
+ // Canonical (owner) lens names — Aria's Arabic cognition vocabulary.
258
+ const LENS_NAMES_CANONICAL = ['nur', 'mizan', 'hikma', 'tafakkur', 'tadabbur', 'ilham', 'wahi', 'firasah'];
259
+ // Generic (client) lens labels — neutral, IP-neutral equivalents.
260
+ const LENS_NAMES_GENERIC = ['perception', 'balance', 'wisdom', 'reflection', 'foresight', 'insight', 'revelation', 'discernment'];
261
+ // Active label set for this execution — determined by tier.
262
+ const LENS_NAMES = IS_OWNER ? LENS_NAMES_CANONICAL : LENS_NAMES_GENERIC;
263
+
264
+ // Doctrine memory filenames are Aria-side substrate IP. On client surfaces
265
+ // replace them with generic descriptions in block-reason text.
266
+ function docRef(canonicalFilename, genericDescription) {
267
+ return IS_OWNER ? canonicalFilename : genericDescription;
268
+ }
269
+
219
270
  // 8-lens cognition block per EIGHT_LENS_DOCTRINE.md. Required on
220
271
  // non-trivial Bash regardless of whether the command is destructive.
221
272
  // Threshold: at least 4 of the 8 lens names must appear inside the
@@ -223,7 +274,6 @@ const VERIFY_BLOCK_RX =
223
274
  // colon, not a placeholder template). The substance check (added
224
275
  // 2026-04-26) defeats ritual emission — `nur: ok` no longer counts.
225
276
  const COGNITION_BLOCK_RX = /<cognition>([\s\S]*?)<\/cognition>/i;
226
- const LENS_NAMES = ['nur', 'mizan', 'hikma', 'tafakkur', 'tadabbur', 'ilham', 'wahi', 'firasah'];
227
277
  const REQUIRED_LENSES = 4;
228
278
  const SUBSTANCE_MIN_CHARS = 20;
229
279
  // Placeholder patterns from the gate's own correction message + the
@@ -256,14 +306,21 @@ const SHORT_BASH_LIMIT = 30;
256
306
  // race that made same-message cognition invisible to PreToolUse).
257
307
  //
258
308
  // Two accepted formats:
259
- // (a) Per-lens lines: `# nur: <substantive thought>\n# mizan: ...`
260
- // (b) Single-line: `# cognition: nur=<text>; mizan=<text>; ...`
309
+ // (a) Per-lens lines: `# <label>: <substantive thought>\n# <label>: ...`
310
+ // (b) Single-line: `# cognition: <label>=<text>; <label>=<text>; ...`
261
311
  //
262
312
  // Substance check applies (≥SUBSTANCE_MIN_CHARS, not a `<placeholder>`).
263
313
  // 4+ substantive lenses inline → gate passes, no transcript scan
264
314
  // needed. Cognition becomes a property of THE ACTION, not of some
265
315
  // 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;
316
+ //
317
+ // Inline regex is built from the active LENS_NAMES so both canonical
318
+ // and generic label sets are accepted in their respective tiers.
319
+ const _INLINE_LENS_PATTERN = LENS_NAMES.join('|');
320
+ const INLINE_LENS_LINE_RX_GLOBAL = new RegExp(
321
+ `^\\s*#\\s*(${_INLINE_LENS_PATTERN})\\s*:\\s*(.+)$`,
322
+ 'gim',
323
+ );
267
324
  const INLINE_COGNITION_HEADER_RX = /^\s*#\s*cognition\s*:\s*(.+)$/im;
268
325
 
269
326
  function detectInlineCognition(cmd) {
@@ -654,7 +711,7 @@ if (matched) {
654
711
  }
655
712
  // Block with appropriate corrective message.
656
713
  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.
714
+ ? `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
715
 
659
716
  <verify>
660
717
  target: <exactly what is being changed>
@@ -665,20 +722,20 @@ if (matched) {
665
722
  </verify>
666
723
 
667
724
  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.
725
+ : `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
726
 
670
727
  <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>
728
+ ${LENS_NAMES[0]}: <what you see plainly, specific to this task>
729
+ ${LENS_NAMES[1]}: <what's out of proportion / risk profile>
730
+ ${LENS_NAMES[2]}: <what memory or principle applies>
731
+ ${LENS_NAMES[3]}: <deep structural read>
732
+ ${LENS_NAMES[4]}: <if-then chain>
733
+ ${LENS_NAMES[5]}: <distant connection>
734
+ ${LENS_NAMES[6]}: <what just landed in this turn>
735
+ ${LENS_NAMES[7]}: <what user actually needs>
679
736
  </cognition>
680
737
 
681
- At least 4 substantive lenses required. Bypass: '# doctrine-authorized: <reason>' inline.`;
738
+ At least 4 substantive lenses required.`;
682
739
  audit(`block ${matched.name} verify=${hasVerify} cognition=${lensCount}`, cmdPreview);
683
740
  pushDecision('block', `destructive ${matched.name} missing ${!hasVerify ? 'verify' : 'cognition'}`);
684
741
  console.log(JSON.stringify({ decision: 'block', reason }));
@@ -699,10 +756,10 @@ if (!hasCognition) {
699
756
  ? `REQUIRED — cognition for every action, no exceptions. Two equivalent forms; either satisfies the gate (both equally REQUIRED, neither preferred over the other):
700
757
 
701
758
  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>
759
+ # ${LENS_NAMES[0]}: <real perception, ≥${SUBSTANCE_MIN_CHARS} chars, no <placeholder>>
760
+ # ${LENS_NAMES[1]}: <real risk read>
761
+ # ${LENS_NAMES[2]}: <what principle applies>
762
+ # ${LENS_NAMES[3]}: <deep structural read>
706
763
  <your actual command here>
707
764
 
708
765
  FORM 2 (cognition block in assistant text):
@@ -712,14 +769,14 @@ Both forms count toward the ${REQUIRED_LENSES}+ requirement; gate counts inline
712
769
  : `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
770
 
714
771
  <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>
772
+ ${LENS_NAMES[0]}: <what you see plainly, specific to this edit>
773
+ ${LENS_NAMES[1]}: <what's out of proportion — what could this overwrite or break?>
774
+ ${LENS_NAMES[2]}: <what principle applies (name the source)>
775
+ ${LENS_NAMES[3]}: <deep structural read>
776
+ ${LENS_NAMES[4]}: <if-then chain — what follows from this edit>
777
+ ${LENS_NAMES[5]}: <distant connection a less-careful editor would miss>
778
+ ${LENS_NAMES[6]}: <what just landed in this turn that justifies this edit>
779
+ ${LENS_NAMES[7]}: <what user actually needs underneath>
723
780
  </cognition>`;
724
781
 
725
782
  const reason = `${header}
@@ -744,7 +801,7 @@ No per-tool bypass available (v3 doctrine — the harness's whole purpose is no
744
801
  if (discoveryUnresolved) {
745
802
  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
803
 
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.
804
+ 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
805
 
749
806
  Re-emit cognition with one of these resolution forms:
750
807
 
@@ -752,8 +809,8 @@ Re-emit cognition with one of these resolution forms:
752
809
  - <what you found>: <fix-now | task: TASK-123 | needs-user-decision>
753
810
 
754
811
  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).
812
+ ${LENS_NAMES[2]}: ... fixing inline this turn (same-turn-fix per atomic-discovery-rule).
813
+ ${LENS_NAMES[3]}: ... TaskCreate'd as TASK-XXX with full context (file path, line, what's broken).
757
814
 
758
815
  Acceptable resolution markers: 'discoveries:' / 'addressing:' / 'fixing:' / 'TaskCreate' / 'tracked as #N' / 'linear issue' / 'fix-now' / 'same-turn fix'.
759
816
 
@@ -782,6 +839,12 @@ No env-var disable path — gates are unconditional from the gated process per H
782
839
  // is a consult to harness/aria endpoints (regardless of plan state), skip the
783
840
  // binding block. Cognition gate above already passed; the consult itself
784
841
  // will issue the next plan on completion. Audited per-use.
842
+ //
843
+ // bindingBypassReason: per-command bypass was removed in v3. The variable is
844
+ // kept as a fixed null so the binding check below reads cleanly without a
845
+ // ReferenceError. No new bypass entries can be created (pre-existing defect
846
+ // fixed inline per atomic-discovery-rule).
847
+ const bindingBypassReason = null;
785
848
  const __bindingActionClassification = (BINDING_ENABLED && !bindingBypassReason)
786
849
  ? classifyToolForBinding(toolName, cmd, filePath)
787
850
  : null;
@@ -127,8 +127,42 @@ 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
+ // surface line format: "surface=platform:<X> group:<Y> hamza:true chat_type:<Z>"
147
+ if (/\bhamza:true\b/.test(harnessStr)) return true;
148
+ }
149
+ } catch {/* packet unreadable → default to client tier */}
150
+ return false;
151
+ }
152
+
153
+ const IS_OWNER = resolveOwnerTier();
154
+
155
+ const LENS_NAMES_CANONICAL = ['nur', 'mizan', 'hikma', 'tafakkur', 'tadabbur', 'ilham', 'wahi', 'firasah'];
156
+ const LENS_NAMES_GENERIC = ['perception', 'balance', 'wisdom', 'reflection', 'foresight', 'insight', 'revelation', 'discernment'];
157
+ const LENS_NAMES = IS_OWNER ? LENS_NAMES_CANONICAL : LENS_NAMES_GENERIC;
158
+
159
+ // Doctrine memory filenames are Aria-side substrate IP.
160
+ // Client surfaces see generic descriptions instead of real filenames.
161
+ function docRef(canonicalFilename, genericDescription) {
162
+ return IS_OWNER ? canonicalFilename : genericDescription;
163
+ }
164
+
130
165
  // Lens substance check — same constants as aria-pre-tool-gate.mjs
131
- const LENS_NAMES = ['nur', 'mizan', 'hikma', 'tafakkur', 'tadabbur', 'ilham', 'wahi', 'firasah'];
132
166
  const REQUIRED_LENSES = 4;
133
167
  const SUBSTANCE_MIN_CHARS = 20;
134
168
  const PLACEHOLDER_RX = /^\s*<[^<>]+>\s*$/;
@@ -695,7 +729,7 @@ if (cog.count >= REQUIRED_LENSES) {
695
729
  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
730
  if (driftBlock) violations.push(`Drift triggers (${driftHits.length}): ${driftHits.map((h) => `"${h.trigger}" → ${h.memory}`).join(' | ')}`);
697
731
  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.`);
732
+ 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
733
  if (phaseReportMissing) {
700
734
  const phaseList = (activePlan?.phases || []).map((p) => `${p.id}:${p.summary?.slice(0, 60) || ''}`).join(' | ');
701
735
  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 +762,19 @@ if (cog.count >= REQUIRED_LENSES) {
728
762
  }
729
763
 
730
764
  // 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.
765
+ 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
766
 
733
767
  Re-emit the response with substantive lens application BEFORE drafting. Each lens must have ≥${SUBSTANCE_MIN_CHARS} chars of non-placeholder content:
734
768
 
735
769
  <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>
770
+ ${LENS_NAMES[0]}: <what you actually see — specific to the decision, not a placeholder>
771
+ ${LENS_NAMES[1]}: <real risk read — what's out of proportion>
772
+ ${LENS_NAMES[2]}: <what principle applies — name the source>
773
+ ${LENS_NAMES[3]}: <deep structural read — go beneath the surface>
774
+ ${LENS_NAMES[4]}: <if-then chain — what follows from what>
775
+ ${LENS_NAMES[5]}: <distant connection — what's not obvious>
776
+ ${LENS_NAMES[6]}: <what just landed — what changed in this exchange>
777
+ ${LENS_NAMES[7]}: <what user actually needs — beneath the literal ask>
744
778
  </cognition>
745
779
 
746
780
  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,399 @@
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
+ // Use a non-destructive but non-trivial command that skips the verify path
139
+ // and goes straight to cognition-missing, where lens labels appear.
140
+ function runPreToolGate(transcriptPath, command = 'npm run build --workspace=packages/aria-connector') {
141
+ const event = JSON.stringify({
142
+ tool_name: 'Bash',
143
+ tool_input: { command },
144
+ transcript_path: transcriptPath,
145
+ session_id: `test-tier-${Date.now()}`,
146
+ });
147
+ return spawnSync(process.execPath, [PRE_TOOL_HOOK], {
148
+ input: event,
149
+ encoding: 'utf8',
150
+ timeout: 10000,
151
+ env: {
152
+ ...process.env,
153
+ HOME,
154
+ ARIA_COGNITION_PUSH: 'off', // silence network push
155
+ ARIA_HARNESS_TOKEN: '', // no outbound harness calls
156
+ ARIA_BINDING_ENABLED: 'false', // disable binding gate — isolate cognition test
157
+ },
158
+ });
159
+ }
160
+
161
+ function runStopGate(transcriptPath) {
162
+ const event = JSON.stringify({
163
+ tool_name: 'Stop',
164
+ transcript_path: transcriptPath,
165
+ session_id: `test-tier-${Date.now()}`,
166
+ });
167
+ return spawnSync(process.execPath, [STOP_HOOK], {
168
+ input: event,
169
+ encoding: 'utf8',
170
+ timeout: 15000,
171
+ env: {
172
+ ...process.env,
173
+ HOME,
174
+ ARIA_COGNITION_PUSH: 'off',
175
+ ARIA_HARNESS_TOKEN: '',
176
+ },
177
+ });
178
+ }
179
+
180
+ // ── Test utilities ──────────────────────────────────────────────────────────
181
+ const tmpTranscript = `/tmp/test-tier-transcript-${Date.now()}.jsonl`;
182
+ const tmpTranscriptStop = `/tmp/test-tier-stop-transcript-${Date.now()}.jsonl`;
183
+
184
+ function cleanup() {
185
+ [tmpTranscript, tmpTranscriptStop].forEach((p) => {
186
+ try { if (existsSync(p)) unlinkSync(p); } catch {}
187
+ });
188
+ restorePacket();
189
+ }
190
+
191
+ // ── Suite ───────────────────────────────────────────────────────────────────
192
+
193
+ console.log('\n=== Phase 11 #59 — Tier-aware lens labeling smoke tests ===\n');
194
+
195
+ // Save existing packet so we can restore after test run.
196
+ savePacket();
197
+
198
+ // ── Test 1: pre-tool-gate, OWNER tier → canonical labels in block reason ──
199
+ console.log('Test 1: aria-pre-tool-gate — OWNER tier shows canonical lens names');
200
+ {
201
+ writeOwnerPacket();
202
+ writeEmptyTranscript(tmpTranscript);
203
+ const result = runPreToolGate(tmpTranscript);
204
+
205
+ // Gate should block (exit 2) — no cognition in transcript
206
+ assert(
207
+ 'T1: gate blocks (exit 2)',
208
+ result.status === 2,
209
+ `exit=${result.status} stderr=${result.stderr?.slice(0, 200)}`,
210
+ );
211
+
212
+ let blockReason = '';
213
+ try {
214
+ const parsed = JSON.parse(result.stdout);
215
+ blockReason = parsed.reason || '';
216
+ } catch {
217
+ blockReason = result.stdout || '';
218
+ }
219
+
220
+ // Must mention at least one canonical label
221
+ const hasCanonical = CANONICAL.some((name) => blockReason.includes(`${name}:`));
222
+ assert(
223
+ 'T1: block reason mentions canonical label (e.g. nur:)',
224
+ hasCanonical,
225
+ blockReason.slice(0, 400),
226
+ );
227
+
228
+ // Must NOT mention generic labels — no IP exposure for owner
229
+ // (owner should only see canonical; absence of generic is nice-to-verify
230
+ // but not a hard requirement since some generic words may appear in prose)
231
+ // Instead check the first lens label is canonical not generic:
232
+ const firstCanonicalIdx = blockReason.indexOf(`${CANONICAL[0]}:`);
233
+ const firstGenericIdx = blockReason.indexOf(`${GENERIC[0]}:`);
234
+ assert(
235
+ 'T1: first lens label is canonical (nur:), not generic (perception:)',
236
+ firstCanonicalIdx >= 0 && (firstGenericIdx < 0 || firstCanonicalIdx < firstGenericIdx),
237
+ `firstCanonicalIdx=${firstCanonicalIdx} firstGenericIdx=${firstGenericIdx}`,
238
+ );
239
+ }
240
+
241
+ // ── Test 2: pre-tool-gate, CLIENT tier → generic labels in block reason ──
242
+ console.log('\nTest 2: aria-pre-tool-gate — CLIENT tier shows generic lens labels');
243
+ {
244
+ writeClientPacket();
245
+ writeEmptyTranscript(tmpTranscript);
246
+ const result = runPreToolGate(tmpTranscript);
247
+
248
+ assert(
249
+ 'T2: gate blocks (exit 2)',
250
+ result.status === 2,
251
+ `exit=${result.status} stderr=${result.stderr?.slice(0, 200)}`,
252
+ );
253
+
254
+ let blockReason = '';
255
+ try {
256
+ const parsed = JSON.parse(result.stdout);
257
+ blockReason = parsed.reason || '';
258
+ } catch {
259
+ blockReason = result.stdout || '';
260
+ }
261
+
262
+ // Must mention at least one generic label
263
+ const hasGeneric = GENERIC.some((name) => blockReason.includes(`${name}:`));
264
+ assert(
265
+ 'T2: block reason mentions generic label (e.g. perception:)',
266
+ hasGeneric,
267
+ blockReason.slice(0, 400),
268
+ );
269
+
270
+ // Must NOT expose canonical Arabic names
271
+ const exposesCanonical = CANONICAL.some((name) =>
272
+ blockReason.includes(`${name}:`),
273
+ );
274
+ assert(
275
+ 'T2: block reason does NOT expose canonical Arabic lens names',
276
+ !exposesCanonical,
277
+ `canonical leak: ${CANONICAL.filter((n) => blockReason.includes(`${n}:`)).join(', ')} in: ${blockReason.slice(0, 300)}`,
278
+ );
279
+
280
+ // Check doctrine memory filename is neutralized (no feedback_no_flag_without_fix.md for client)
281
+ const noDocFileLeak = !blockReason.includes('feedback_no_flag_without_fix.md');
282
+ // (This specific file only appears in discovery-unresolved path; just verify
283
+ // that the block reason itself also neutralizes EIGHT_LENS_DOCTRINE references if any)
284
+ // For this test we just assert the generic label set is present.
285
+ assert(
286
+ 'T2: first generic label (perception:) appears in block reason',
287
+ blockReason.includes(`${GENERIC[0]}:`),
288
+ blockReason.slice(0, 400),
289
+ );
290
+ }
291
+
292
+ // ── Test 3: stop-gate, OWNER tier → canonical labels ──
293
+ console.log('\nTest 3: aria-stop-gate — OWNER tier shows canonical lens names');
294
+ {
295
+ writeOwnerPacket();
296
+ writeNoCognitionStopTranscript(tmpTranscriptStop);
297
+ const result = runStopGate(tmpTranscriptStop);
298
+
299
+ assert(
300
+ 'T3: stop-gate blocks (exit 2)',
301
+ result.status === 2,
302
+ `exit=${result.status} stderr=${result.stderr?.slice(0, 200)}`,
303
+ );
304
+
305
+ let blockReason = '';
306
+ try {
307
+ const parsed = JSON.parse(result.stdout);
308
+ blockReason = parsed.reason || '';
309
+ } catch {
310
+ blockReason = result.stdout || '';
311
+ }
312
+
313
+ const hasCanonical = CANONICAL.some((name) => blockReason.includes(`${name}:`));
314
+ assert(
315
+ 'T3: stop-gate block reason mentions canonical label',
316
+ hasCanonical,
317
+ blockReason.slice(0, 400),
318
+ );
319
+ }
320
+
321
+ // ── Test 4: stop-gate, CLIENT tier → generic labels, no canonical leak ──
322
+ console.log('\nTest 4: aria-stop-gate — CLIENT tier shows generic labels, no canonical leak');
323
+ {
324
+ writeClientPacket();
325
+ writeNoCognitionStopTranscript(tmpTranscriptStop);
326
+ const result = runStopGate(tmpTranscriptStop);
327
+
328
+ assert(
329
+ 'T4: stop-gate blocks (exit 2)',
330
+ result.status === 2,
331
+ `exit=${result.status} stderr=${result.stderr?.slice(0, 200)}`,
332
+ );
333
+
334
+ let blockReason = '';
335
+ try {
336
+ const parsed = JSON.parse(result.stdout);
337
+ blockReason = parsed.reason || '';
338
+ } catch {
339
+ blockReason = result.stdout || '';
340
+ }
341
+
342
+ const hasGeneric = GENERIC.some((name) => blockReason.includes(`${name}:`));
343
+ assert(
344
+ 'T4: stop-gate block reason mentions generic label',
345
+ hasGeneric,
346
+ blockReason.slice(0, 400),
347
+ );
348
+
349
+ const exposesCanonical = CANONICAL.some((name) => blockReason.includes(`${name}:`));
350
+ assert(
351
+ 'T4: stop-gate block reason does NOT expose canonical lens names',
352
+ !exposesCanonical,
353
+ `canonical leak: ${CANONICAL.filter((n) => blockReason.includes(`${n}:`)).join(', ')}`,
354
+ );
355
+ }
356
+
357
+ // ── Test 5: packet missing → defaults to CLIENT tier (fail-safe) ──────────
358
+ console.log('\nTest 5: missing packet cache → defaults to CLIENT tier (fail-safe)');
359
+ {
360
+ // Remove the packet cache
361
+ try { unlinkSync(PACKET_PATH); } catch {}
362
+ writeEmptyTranscript(tmpTranscript);
363
+ const result = runPreToolGate(tmpTranscript);
364
+
365
+ assert(
366
+ 'T5: gate blocks (exit 2) with no packet',
367
+ result.status === 2,
368
+ `exit=${result.status}`,
369
+ );
370
+
371
+ let blockReason = '';
372
+ try {
373
+ const parsed = JSON.parse(result.stdout);
374
+ blockReason = parsed.reason || '';
375
+ } catch {
376
+ blockReason = result.stdout || '';
377
+ }
378
+
379
+ // With no packet, should default to generic (client-safe fail direction)
380
+ const hasGeneric = GENERIC.some((name) => blockReason.includes(`${name}:`));
381
+ const exposesCanonical = CANONICAL.some((name) => blockReason.includes(`${name}:`));
382
+ assert(
383
+ 'T5: defaults to generic labels when packet is absent',
384
+ hasGeneric && !exposesCanonical,
385
+ `generic=${hasGeneric} canonicalLeak=${exposesCanonical} reason=${blockReason.slice(0, 300)}`,
386
+ );
387
+ }
388
+
389
+ // ── Summary ─────────────────────────────────────────────────────────────────
390
+ cleanup();
391
+ console.log(`\n${'─'.repeat(60)}`);
392
+ console.log(`Results: ${passed} passed, ${failed} failed`);
393
+ if (failed > 0) {
394
+ console.error('\nSome tests FAILED — see FAIL lines above.');
395
+ process.exit(1);
396
+ } else {
397
+ console.log('\nAll tests PASSED.');
398
+ process.exit(0);
399
+ }
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.20",
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),