@akasecurity/ai-tc-claude-code 0.9.2 → 0.9.4

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.
package/scripts/intro.js CHANGED
@@ -492,7 +492,7 @@ var require_ignore = __commonJS({
492
492
  });
493
493
 
494
494
  // src/intro.ts
495
- import { readFileSync as readFileSync7 } from "fs";
495
+ import { readFileSync as readFileSync8 } from "fs";
496
496
 
497
497
  // ../../packages/schema/src/exception-scope.ts
498
498
  var MINUTE_MS = 6e4;
@@ -15997,6 +15997,7 @@ var ExceptionConditions = external_exports.object({
15997
15997
  sourceTool: external_exports.string().optional(),
15998
15998
  provider: external_exports.string().optional()
15999
15999
  }).strict();
16000
+ var ExceptionCapability = external_exports.enum(["suppress", "reveal_to_model"]);
16000
16001
  var DetectionException = external_exports.object({
16001
16002
  id: external_exports.guid(),
16002
16003
  ruleId: external_exports.string(),
@@ -16013,6 +16014,7 @@ var DetectionException = external_exports.object({
16013
16014
  keyVersion: external_exports.number().int().positive(),
16014
16015
  // maskMatch() preview of the approved value — never the raw value.
16015
16016
  maskedValue: external_exports.string(),
16017
+ capability: ExceptionCapability.default("suppress"),
16016
16018
  scope: ExceptionScope,
16017
16019
  expiresAt: external_exports.iso.datetime().nullable(),
16018
16020
  maxUses: external_exports.number().int().positive().nullable(),
@@ -16036,6 +16038,7 @@ var ExceptionBundleEntry = DetectionException.pick({
16036
16038
  ruleId: true,
16037
16039
  valueFingerprint: true,
16038
16040
  keyVersion: true,
16041
+ capability: true,
16039
16042
  expiresAt: true,
16040
16043
  maxUses: true,
16041
16044
  useCount: true,
@@ -16796,8 +16799,116 @@ var PatchInstalledPackRequest = external_exports.object({
16796
16799
  message: "At least one field must be provided"
16797
16800
  }).meta({ id: "PatchInstalledPackRequest" });
16798
16801
 
16802
+ // ../../packages/schema/src/zod/vault.ts
16803
+ var CATEGORY_ALTERNATION = DetectionCategory.options.join("|");
16804
+ var POINTER_TOKEN_PATTERN = new RegExp(
16805
+ `\\[\\[aka:(?:${CATEGORY_ALTERNATION}):[A-Z2-7]{2,7}\\.[A-Z2-7]{26}\\.[A-Z2-7]{16}\\]\\]`
16806
+ );
16807
+ var POINTER_TOKEN_ANCHORED = new RegExp(`^${POINTER_TOKEN_PATTERN.source}$`);
16808
+ var PointerToken = external_exports.string().regex(POINTER_TOKEN_ANCHORED);
16809
+ var ParsedPointer = external_exports.object({
16810
+ category: DetectionCategory,
16811
+ keyVersion: external_exports.number().int().positive(),
16812
+ pointerId: external_exports.string(),
16813
+ tag: external_exports.string()
16814
+ });
16815
+ var VaultEntry = external_exports.object({
16816
+ pointerId: external_exports.string(),
16817
+ // The keyed HMAC of the raw value under `exception.key`, and the epoch it was
16818
+ // derived under. This is what a reveal-to-model grant matches on, and it rotates
16819
+ // independently of the vault encryption key below.
16820
+ valueFingerprint: external_exports.string().regex(/^[0-9a-f]{64}$/),
16821
+ fingerprintKeyVersion: external_exports.number().int().positive(),
16822
+ // The vault-key epoch this row's ciphertext was sealed under.
16823
+ keyVersion: external_exports.number().int().positive(),
16824
+ // Fixed at first mint and never updated: the same value detected later under a
16825
+ // different rule's category keeps the category it was minted with, so one
16826
+ // value always produces exactly one wire token.
16827
+ category: DetectionCategory,
16828
+ ruleId: external_exports.string(),
16829
+ // Partial-reveal preview for badges and listings. Never the raw value.
16830
+ maskedMatch: external_exports.string(),
16831
+ provider: external_exports.string().optional(),
16832
+ ciphertext: external_exports.string(),
16833
+ nonce: external_exports.string(),
16834
+ authTag: external_exports.string(),
16835
+ // How many times this value has been detected on this machine — the reuse
16836
+ // signal the vault dashboard reads. Distinct from VaultDeref.pointerCount.
16837
+ occurrenceCount: external_exports.number().int().nonnegative(),
16838
+ firstSeen: external_exports.string(),
16839
+ lastSeen: external_exports.string()
16840
+ });
16841
+ var PointerDescriptor = external_exports.object({
16842
+ category: DetectionCategory,
16843
+ provider: external_exports.string().optional(),
16844
+ maskedMatch: external_exports.string(),
16845
+ occurrences: external_exports.number().int().nonnegative(),
16846
+ firstSeen: external_exports.string(),
16847
+ lastSeen: external_exports.string()
16848
+ });
16849
+ var PointerIdentity = external_exports.object({
16850
+ ruleId: external_exports.string(),
16851
+ valueFingerprint: external_exports.string().regex(/^[0-9a-f]{64}$/),
16852
+ fingerprintKeyVersion: external_exports.number().int().positive()
16853
+ });
16854
+ var DetokenizeTarget = external_exports.enum(["human", "model"]);
16855
+ var VaultDerefReason = external_exports.enum([
16856
+ "display",
16857
+ "explicit-reveal",
16858
+ "view-render",
16859
+ "model-input",
16860
+ "remediation",
16861
+ "purge"
16862
+ ]);
16863
+ var VaultDerefOutcome = external_exports.enum(["revealed", "refused", "unavailable"]);
16864
+ var VaultDeref = external_exports.object({
16865
+ id: external_exports.guid(),
16866
+ pointerId: external_exports.string(),
16867
+ at: external_exports.string(),
16868
+ target: DetokenizeTarget,
16869
+ reason: VaultDerefReason,
16870
+ outcome: VaultDerefOutcome,
16871
+ // Present only on a model-target crossing that a reveal grant authorized.
16872
+ grantId: external_exports.string().optional(),
16873
+ // How many pointers ONE batched render resolved. 1 for unbatched rows. Named
16874
+ // apart from VaultEntry.occurrenceCount, which counts detections of a value.
16875
+ pointerCount: external_exports.number().int().positive().default(1)
16876
+ });
16877
+ var VaultSightingKind = external_exports.enum([
16878
+ "prompt",
16879
+ "tool-input",
16880
+ "tool-output",
16881
+ "file",
16882
+ "transcript"
16883
+ ]);
16884
+ var VaultSighting = external_exports.object({
16885
+ location: external_exports.string(),
16886
+ kind: VaultSightingKind,
16887
+ firstSeen: external_exports.string(),
16888
+ lastSeen: external_exports.string()
16889
+ });
16890
+ var VaultInventoryEntry = external_exports.object({
16891
+ pointerId: external_exports.string(),
16892
+ category: DetectionCategory,
16893
+ provider: external_exports.string().optional(),
16894
+ maskedMatch: external_exports.string(),
16895
+ occurrences: external_exports.number().int().nonnegative(),
16896
+ firstSeen: external_exports.string(),
16897
+ lastSeen: external_exports.string(),
16898
+ // The active reveal-to-model grant covering this value, when one exists —
16899
+ // the inventory badges it, the row links to revocation.
16900
+ revealGrantId: external_exports.string().nullable(),
16901
+ sightings: external_exports.array(VaultSighting)
16902
+ });
16903
+ var VaultKeyCustody = external_exports.string();
16904
+ var VaultInlineReveal = external_exports.enum(["masked", "full", "off"]);
16905
+ var VaultConsent = external_exports.object({
16906
+ acknowledgedAt: external_exports.iso.datetime(),
16907
+ version: external_exports.number().int().positive()
16908
+ });
16909
+
16799
16910
  // ../../packages/schema/src/zod/local.ts
16800
- var WORKSPACE_SETTINGS_SPEC_VERSION = 4;
16911
+ var WORKSPACE_SETTINGS_SPEC_VERSION = 5;
16801
16912
  var RunMode = external_exports.enum(["standalone"]);
16802
16913
  var SimpleDetectionPolicy = external_exports.enum(["redact", "warn"]);
16803
16914
  var HistoricalAccess = external_exports.enum(["full", "session-only"]);
@@ -16819,6 +16930,16 @@ var WorkspaceSettings = external_exports.object({
16819
16930
  // In-place egress extraction on the scan paths; disable to stop all Data
16820
16931
  // Shares writes.
16821
16932
  dataSharesInPlace: external_exports.boolean().default(true),
16933
+ // Consent to keep a RECOVERABLE encrypted copy of detected values in the local
16934
+ // vault, instead of destroying them. Absent by default: this is a custody
16935
+ // change from one-way redaction, so it is never an assumed grant on upgrade.
16936
+ // Revoking stops future vaulting; it does not erase what is already stored —
16937
+ // purging the vault is the eraser.
16938
+ vaultConsent: VaultConsent.optional(),
16939
+ // Where the vault master key lives.
16940
+ vaultKeyCustody: VaultKeyCustody.default("file"),
16941
+ // How a pointer renders in assistant prose on screen (see VaultInlineReveal).
16942
+ vaultInlineReveal: VaultInlineReveal.default("masked"),
16822
16943
  // Absent until /aka:setup completes; its presence is what "onboarded" means.
16823
16944
  onboardedAt: external_exports.iso.datetime().optional(),
16824
16945
  // Records that the user consented to sending findings to the model API for
@@ -17205,11 +17326,11 @@ import { execFileSync } from "child_process";
17205
17326
  var USE_SHELL = process.platform === "win32";
17206
17327
 
17207
17328
  // ../../packages/plugin-sdk/src/config.ts
17208
- import { existsSync as existsSync3 } from "fs";
17209
- import { join as join6 } from "path";
17329
+ import { existsSync as existsSync4 } from "fs";
17330
+ import { join as join7 } from "path";
17210
17331
 
17211
17332
  // ../../packages/persistence/src/database.ts
17212
- import { randomUUID as randomUUID8 } from "crypto";
17333
+ import { randomUUID as randomUUID9 } from "crypto";
17213
17334
  import { existsSync, renameSync as renameSync2, rmSync as rmSync2 } from "fs";
17214
17335
  import { join, sep } from "path";
17215
17336
  import { DatabaseSync } from "node:sqlite";
@@ -17227,6 +17348,12 @@ var LIVE_ACTIVITY_WINDOW_MS = 30 * 6e4;
17227
17348
  import { randomUUID } from "crypto";
17228
17349
  var BLOCKED_DETECTIONS_TTL_MS = 30 * 60 * 1e3;
17229
17350
  var BLOCKED_DETECTIONS_RETENTION_MS = 24 * 60 * 60 * 1e3;
17351
+ var ACTIVE_PREDICATE = `revoked_at IS NULL
17352
+ AND (expires_at IS NULL OR expires_at > :now)
17353
+ AND (max_uses IS NULL OR use_count < max_uses)`;
17354
+ var ACTIVE_REVEAL_GRANT_PREDICATE = `capability = 'reveal_to_model'
17355
+ AND conditions IS NULL
17356
+ AND ${ACTIVE_PREDICATE}`;
17230
17357
 
17231
17358
  // ../../packages/persistence/src/repositories/installed-packs.ts
17232
17359
  import { createHash as createHash2, randomUUID as randomUUID2 } from "crypto";
@@ -17245,16 +17372,20 @@ import { randomUUID as randomUUID5 } from "crypto";
17245
17372
  // ../../packages/persistence/src/repositories/resolutions.ts
17246
17373
  import { randomUUID as randomUUID6 } from "crypto";
17247
17374
 
17248
- // ../../packages/persistence/src/repositories/shares.ts
17375
+ // ../../packages/persistence/src/repositories/secret-vault.ts
17249
17376
  import { randomUUID as randomUUID7 } from "crypto";
17250
17377
 
17378
+ // ../../packages/persistence/src/repositories/shares.ts
17379
+ import { randomUUID as randomUUID8 } from "crypto";
17380
+
17251
17381
  // ../../packages/persistence/src/finding-key.ts
17252
17382
  import { createHash as createHash3 } from "crypto";
17253
17383
 
17254
17384
  // ../../packages/persistence/src/fingerprint.ts
17255
17385
  import { createHmac, randomBytes } from "crypto";
17256
- import { readFileSync } from "fs";
17386
+ import { existsSync as existsSync2, readFileSync } from "fs";
17257
17387
  import { join as join2 } from "path";
17388
+ import { DatabaseSync as DatabaseSync2 } from "node:sqlite";
17258
17389
 
17259
17390
  // ../../packages/persistence/src/local-layout.ts
17260
17391
  import { renameSync as renameSync3 } from "fs";
@@ -17266,10 +17397,36 @@ import { join as join3 } from "path";
17266
17397
  import { readFileSync as readFileSync2 } from "fs";
17267
17398
  import { join as join4 } from "path";
17268
17399
 
17269
- // ../../packages/persistence/src/warn-era-cap.ts
17270
- import { existsSync as existsSync2, writeFileSync as writeFileSync2 } from "fs";
17400
+ // ../../packages/persistence/src/vault/crypto.ts
17401
+ import {
17402
+ createCipheriv,
17403
+ createDecipheriv,
17404
+ createHmac as createHmac2,
17405
+ hkdfSync,
17406
+ timingSafeEqual
17407
+ } from "crypto";
17408
+
17409
+ // ../../packages/persistence/src/vault/key-provider.ts
17410
+ import { execFileSync as execFileSync2 } from "child_process";
17411
+ import { randomBytes as randomBytes2 } from "crypto";
17412
+ import {
17413
+ chmodSync as chmodSync2,
17414
+ mkdirSync as mkdirSync2,
17415
+ readFileSync as readFileSync3,
17416
+ renameSync as renameSync4,
17417
+ rmSync as rmSync3,
17418
+ statSync,
17419
+ writeFileSync as writeFileSync2
17420
+ } from "fs";
17271
17421
  import { join as join5 } from "path";
17272
17422
 
17423
+ // ../../packages/persistence/src/vault/vault.ts
17424
+ import { randomBytes as randomBytes3, randomUUID as randomUUID10 } from "crypto";
17425
+
17426
+ // ../../packages/persistence/src/warn-era-cap.ts
17427
+ import { existsSync as existsSync3, writeFileSync as writeFileSync3 } from "fs";
17428
+ import { join as join6 } from "path";
17429
+
17273
17430
  // ../../packages/plugin-sdk/src/provider-env.ts
17274
17431
  var booleanish = external_exports.string().optional().transform((v) => {
17275
17432
  if (v === void 0) return void 0;
@@ -17289,9 +17446,9 @@ var providerEnvShape = {
17289
17446
  var ProviderEnvSchema = external_exports.object(providerEnvShape);
17290
17447
 
17291
17448
  // ../../packages/plugin-sdk/src/config-inventory.ts
17292
- import { readdirSync, readFileSync as readFileSync4, realpathSync, statSync as statSync2 } from "fs";
17449
+ import { readdirSync, readFileSync as readFileSync5, realpathSync, statSync as statSync3 } from "fs";
17293
17450
  import { homedir as homedir2 } from "os";
17294
- import { basename as basename2, join as join8 } from "path";
17451
+ import { basename as basename2, join as join9 } from "path";
17295
17452
 
17296
17453
  // ../../packages/detections/src/egress/registry.ts
17297
17454
  var EXTRACTOR_VERSION = "1";
@@ -18002,18 +18159,18 @@ var POLYNOMIAL_PROBES = ["abc-", "a.", "a ", "a=", "x", "0", "a@", "a/", "ab"].m
18002
18159
  );
18003
18160
 
18004
18161
  // ../../packages/plugin-sdk/src/repo.ts
18005
- import { existsSync as existsSync4, readFileSync as readFileSync3, statSync } from "fs";
18006
- import { basename, dirname, isAbsolute, join as join7, sep as sep2 } from "path";
18162
+ import { existsSync as existsSync5, readFileSync as readFileSync4, statSync as statSync2 } from "fs";
18163
+ import { basename, dirname, isAbsolute, join as join8, sep as sep2 } from "path";
18007
18164
 
18008
18165
  // ../../packages/plugin-sdk/src/events.ts
18009
- import { createHash as createHash4, randomUUID as randomUUID9 } from "crypto";
18166
+ import { createHash as createHash4, randomUUID as randomUUID11 } from "crypto";
18010
18167
 
18011
18168
  // ../../packages/plugin-sdk/src/inventory-resolver.ts
18012
18169
  import { arch, hostname as hostname3, platform, release } from "os";
18013
18170
 
18014
18171
  // ../../packages/plugin-sdk/src/nudge.ts
18015
- import { mkdirSync as mkdirSync2, readFileSync as readFileSync5, writeFileSync as writeFileSync3 } from "fs";
18016
- import { join as join9 } from "path";
18172
+ import { mkdirSync as mkdirSync3, readFileSync as readFileSync6, writeFileSync as writeFileSync4 } from "fs";
18173
+ import { join as join10 } from "path";
18017
18174
 
18018
18175
  // ../../packages/plugin-sdk/src/paths.ts
18019
18176
  import { readdirSync as readdirSync2, realpathSync as realpathSync2 } from "fs";
@@ -18021,18 +18178,18 @@ import { basename as basename3, dirname as dirname2, sep as sep3 } from "path";
18021
18178
 
18022
18179
  // ../../packages/plugin-sdk/src/project-files.ts
18023
18180
  var import_ignore = __toESM(require_ignore(), 1);
18024
- import { existsSync as existsSync5, readdirSync as readdirSync3, readFileSync as readFileSync6 } from "fs";
18025
- import { basename as basename4, join as join10, relative, sep as sep4 } from "path";
18181
+ import { existsSync as existsSync6, readdirSync as readdirSync3, readFileSync as readFileSync7 } from "fs";
18182
+ import { basename as basename4, join as join11, relative, sep as sep4 } from "path";
18026
18183
 
18027
18184
  // ../../packages/plugin-sdk/src/runtime.ts
18028
- import { randomUUID as randomUUID10 } from "crypto";
18185
+ import { randomUUID as randomUUID12 } from "crypto";
18029
18186
 
18030
18187
  // ../../packages/plugin-sdk/src/suppressions.ts
18031
18188
  var THIRTY_DAYS_MS = 30 * 24 * 60 * 60 * 1e3;
18032
18189
 
18033
18190
  // ../../packages/plugin-sdk/src/throttle.ts
18034
- import { mkdirSync as mkdirSync3, statSync as statSync3, writeFileSync as writeFileSync4 } from "fs";
18035
- import { join as join11 } from "path";
18191
+ import { mkdirSync as mkdirSync4, statSync as statSync4, writeFileSync as writeFileSync5 } from "fs";
18192
+ import { join as join12 } from "path";
18036
18193
 
18037
18194
  // src/command-registry.ts
18038
18195
  import { readdirSync as readdirSync4 } from "fs";
@@ -18136,7 +18293,7 @@ function buildIntroCard(manifest2, verified) {
18136
18293
  var manifestPath = process.argv[2];
18137
18294
  var manifest = {};
18138
18295
  try {
18139
- manifest = JSON.parse(readFileSync7(manifestPath ?? "", "utf8"));
18296
+ manifest = JSON.parse(readFileSync8(manifestPath ?? "", "utf8"));
18140
18297
  } catch {
18141
18298
  }
18142
18299
  process.stdout.write(show(fenced(buildIntroCard(manifest))));