@hasna/skills 0.4.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +220 -5
  2. package/bin/index.js +7747 -5645
  3. package/bin/mcp.js +1493 -431
  4. package/bin/migrate.js +148 -40
  5. package/bin/server.js +53 -83
  6. package/bin/worker.js +41 -73
  7. package/dist/admin-contract.d.ts +37 -19
  8. package/dist/admin-contract.js +1 -1
  9. package/dist/cli/cli.test-utils.d.ts +10 -8
  10. package/dist/cli/commands/customer-profile.d.ts +2 -0
  11. package/dist/cli/commands/customer-verification.d.ts +5 -0
  12. package/dist/cli/commands/tool-primitives.d.ts +1 -1
  13. package/dist/cli/commands/workspace-member-mutations.d.ts +2 -0
  14. package/dist/cli/commands/workspace-members.d.ts +2 -0
  15. package/dist/cli/commands/workspace-selection.d.ts +11 -0
  16. package/dist/cli/env-assignment.d.ts +9 -0
  17. package/dist/index.d.ts +8 -2
  18. package/dist/index.js +841 -167
  19. package/dist/lib/agent-sync.d.ts +13 -8
  20. package/dist/lib/api-url.d.ts +4 -3
  21. package/dist/lib/app-home.d.ts +0 -1
  22. package/dist/lib/client-types.d.ts +75 -0
  23. package/dist/lib/credential-state.d.ts +12 -0
  24. package/dist/lib/fleet-credentials.d.ts +41 -15
  25. package/dist/lib/home-adoption.d.ts +2 -0
  26. package/dist/lib/home-census.d.ts +3 -1
  27. package/dist/lib/local-opt-in.d.ts +24 -0
  28. package/dist/lib/portable-skills-files.d.ts +6 -2
  29. package/dist/lib/read-access.d.ts +83 -0
  30. package/dist/lib/remote-auth.d.ts +23 -3
  31. package/dist/lib/remote-client.d.ts +45 -5
  32. package/dist/lib/remote-profile.d.ts +26 -0
  33. package/dist/lib/remote-registry.d.ts +7 -3
  34. package/dist/lib/remote-workspace-selection.d.ts +58 -0
  35. package/dist/lib/remote-workspace.d.ts +76 -0
  36. package/dist/lib/skillinfo.d.ts +1 -1
  37. package/dist/lib/workspace-profile.d.ts +49 -0
  38. package/dist/mcp/helpers.d.ts +22 -0
  39. package/dist/mcp/index.d.ts +16 -0
  40. package/dist/sdk/governance-store.d.ts +1 -0
  41. package/dist/sdk/index.d.ts +8 -2
  42. package/dist/sdk/index.js +1312 -297
  43. package/dist/sdk/outputs.d.ts +0 -11
  44. package/dist/sdk/runs.d.ts +1 -1
  45. package/dist/storage.js +6 -40
  46. package/docs/skill-standard.md +30 -2
  47. package/package.json +6 -4
  48. package/dist/lib/instance-credentials-race.fixture.d.ts +0 -1
package/bin/worker.js CHANGED
@@ -23103,7 +23103,7 @@ import { randomUUID as randomUUID4 } from "crypto";
23103
23103
  // package.json
23104
23104
  var package_default = {
23105
23105
  name: "@hasna/skills",
23106
- version: "0.4.0",
23106
+ version: "0.5.1",
23107
23107
  description: "Skills library for AI coding agents",
23108
23108
  type: "module",
23109
23109
  bin: {
@@ -23135,6 +23135,7 @@ var package_default = {
23135
23135
  files: [
23136
23136
  "dist/",
23137
23137
  "!dist/**/*.test.d.ts",
23138
+ "!dist/**/*.fixture.d.ts",
23138
23139
  "!dist/test-preload.d.ts",
23139
23140
  "!dist/platform",
23140
23141
  "bin/",
@@ -23160,8 +23161,9 @@ var package_default = {
23160
23161
  migrate: "bun run ./src/server/migrate.ts",
23161
23162
  typecheck: "tsc --noEmit",
23162
23163
  "verify:release": "bun run scripts/release-guard.ts",
23164
+ "verify:consumer-types": "bun run scripts/consumer-types.ts",
23163
23165
  prepare: "bun run build:js",
23164
- prepack: "bun run build && bun run verify:release",
23166
+ prepack: "bun run build && bun run verify:release && bun run verify:consumer-types",
23165
23167
  prepublishOnly: "bun run typecheck && bun run test"
23166
23168
  },
23167
23169
  keywords: [
@@ -23183,6 +23185,7 @@ var package_default = {
23183
23185
  author: "Hasna",
23184
23186
  license: "Apache-2.0",
23185
23187
  devDependencies: {
23188
+ "@hasna/contracts": "1.0.2",
23186
23189
  "@types/bun": "1.3.14",
23187
23190
  "@types/node": "25.2.3",
23188
23191
  "@types/react": "^18.2.0",
@@ -23194,8 +23197,7 @@ var package_default = {
23194
23197
  dependencies: {
23195
23198
  "@aws-sdk/client-ecs": "^3.1079.0",
23196
23199
  "@aws-sdk/client-s3": "^3.1079.0",
23197
- "@hasna/contracts": "1.0.1",
23198
- "@hasna/events": "0.1.16",
23200
+ "@hasna/events": "0.1.18",
23199
23201
  "@modelcontextprotocol/sdk": "^1.26.0",
23200
23202
  chalk: "^5.3.0",
23201
23203
  commander: "^12.1.0",
@@ -23745,7 +23747,7 @@ var $NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS = NODE_RESPONSE_CHECKSUM_V
23745
23747
  var $getFlexibleChecksumsPlugin = getFlexibleChecksumsPlugin;
23746
23748
  var $resolveFlexibleChecksumsConfig = resolveFlexibleChecksumsConfig;
23747
23749
 
23748
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/S3Client.js
23750
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/S3Client.js
23749
23751
  var import_client23 = __toESM(require_client2(), 1);
23750
23752
 
23751
23753
  // ../../node_modules/.bun/@aws-sdk+middleware-sdk-s3@3.972.75/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/submodules/s3/index.js
@@ -24353,7 +24355,7 @@ var $getThrow200ExceptionsPlugin = getThrow200ExceptionsPlugin;
24353
24355
  var $getValidateBucketNamePlugin = getValidateBucketNamePlugin;
24354
24356
  var $resolveS3Config = resolveS3Config;
24355
24357
 
24356
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/S3Client.js
24358
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/S3Client.js
24357
24359
  var import_core = __toESM(require_dist_cjs2(), 1);
24358
24360
  var import_client24 = __toESM(require_client(), 1);
24359
24361
  var import_config29 = __toESM(require_config(), 1);
@@ -24363,17 +24365,17 @@ var import_protocols6 = __toESM(require_protocols(), 1);
24363
24365
  var import_retry4 = __toESM(require_retry(), 1);
24364
24366
  var import_schema2 = __toESM(require_schema(), 1);
24365
24367
 
24366
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/auth/httpAuthSchemeProvider.js
24368
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/auth/httpAuthSchemeProvider.js
24367
24369
  var import_httpAuthSchemes = __toESM(require_httpAuthSchemes(), 1);
24368
24370
  var import_signature_v4_multi_region = __toESM(require_dist_cjs4(), 1);
24369
24371
  var import_client2 = __toESM(require_client(), 1);
24370
24372
  var import_endpoints3 = __toESM(require_endpoints(), 1);
24371
24373
 
24372
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/endpoint/endpointResolver.js
24374
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/endpoint/endpointResolver.js
24373
24375
  var import_client = __toESM(require_client2(), 1);
24374
24376
  var import_endpoints2 = __toESM(require_endpoints(), 1);
24375
24377
 
24376
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/endpoint/bdd.js
24378
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/endpoint/bdd.js
24377
24379
  var import_endpoints = __toESM(require_endpoints(), 1);
24378
24380
  var aw = "ref";
24379
24381
  var ax = "argv";
@@ -26317,7 +26319,7 @@ var nodes = new Int32Array([
26317
26319
  ]);
26318
26320
  var bdd = import_endpoints.BinaryDecisionDiagram.from(nodes, root, _data.conditions, _data.results);
26319
26321
 
26320
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/endpoint/endpointResolver.js
26322
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/endpoint/endpointResolver.js
26321
26323
  var cache = new import_endpoints2.EndpointCache({
26322
26324
  size: 50,
26323
26325
  params: [
@@ -26345,7 +26347,7 @@ var defaultEndpointResolver = (endpointParams, context = {}) => {
26345
26347
  };
26346
26348
  import_endpoints2.customEndpointFunctions.aws = import_client.awsEndpointFunctions;
26347
26349
 
26348
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/auth/httpAuthSchemeProvider.js
26350
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/auth/httpAuthSchemeProvider.js
26349
26351
  var createEndpointRuleSetHttpAuthSchemeParametersProvider = (defaultHttpAuthSchemeParametersProvider) => async (config, context, input) => {
26350
26352
  if (!input) {
26351
26353
  throw new Error("Could not find `input` for `defaultEndpointRuleSetHttpAuthSchemeParametersProvider`");
@@ -26461,11 +26463,11 @@ var resolveHttpAuthSchemeConfig = (config) => {
26461
26463
  });
26462
26464
  };
26463
26465
 
26464
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/commandBuilder.js
26466
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/commandBuilder.js
26465
26467
  var import_client3 = __toESM(require_client(), 1);
26466
26468
  var import_endpoints4 = __toESM(require_endpoints(), 1);
26467
26469
 
26468
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/endpoint/EndpointParameters.js
26470
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/endpoint/EndpointParameters.js
26469
26471
  var resolveClientEndpointParameters = (options) => {
26470
26472
  return Object.assign(options, {
26471
26473
  useFipsEndpoint: options.useFipsEndpoint ?? false,
@@ -26491,7 +26493,7 @@ var commonParams = {
26491
26493
  UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }
26492
26494
  };
26493
26495
 
26494
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/commandBuilder.js
26496
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/commandBuilder.js
26495
26497
  var command = import_client3.makeBuilder(commonParams, "AmazonS3", "S3Client", import_endpoints4.getEndpointPlugin);
26496
26498
  var _ep0 = {
26497
26499
  Bucket: { type: "contextParams", name: "Bucket" },
@@ -26523,10 +26525,10 @@ var _mw11 = (Command, cs, config, o2) => [
26523
26525
  $getSsecPlugin(config)
26524
26526
  ];
26525
26527
 
26526
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/schemas/schemas_0.js
26528
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/schemas/schemas_0.js
26527
26529
  var import_schema = __toESM(require_schema(), 1);
26528
26530
 
26529
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/models/S3ServiceException.js
26531
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/models/S3ServiceException.js
26530
26532
  var import_client4 = __toESM(require_client(), 1);
26531
26533
  class S3ServiceException extends import_client4.ServiceException {
26532
26534
  constructor(options) {
@@ -26535,7 +26537,7 @@ class S3ServiceException extends import_client4.ServiceException {
26535
26537
  }
26536
26538
  }
26537
26539
 
26538
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/models/errors.js
26540
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/models/errors.js
26539
26541
  class NoSuchUpload extends S3ServiceException {
26540
26542
  name = "NoSuchUpload";
26541
26543
  $fault = "client";
@@ -26813,7 +26815,7 @@ class ObjectAlreadyInActiveTierError extends S3ServiceException {
26813
26815
  }
26814
26816
  }
26815
26817
 
26816
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/schemas/schemas_0.js
26818
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/schemas/schemas_0.js
26817
26819
  var _A = "Account";
26818
26820
  var _AAO = "AnalyticsAndOperator";
26819
26821
  var _AC = "AccelerateConfiguration";
@@ -32265,13 +32267,13 @@ var WriteGetObjectResponse$ = [
32265
32267
  () => __Unit
32266
32268
  ];
32267
32269
 
32268
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/commands/CreateSessionCommand.js
32270
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/commands/CreateSessionCommand.js
32269
32271
  class CreateSessionCommand extends command(_ep4, _mw0, "CreateSession", CreateSession$) {
32270
32272
  }
32271
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/package.json
32273
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/package.json
32272
32274
  var package_default2 = {
32273
32275
  name: "@aws-sdk/client-s3",
32274
- version: "3.1126.0",
32276
+ version: "3.1127.0",
32275
32277
  description: "AWS SDK for JavaScript S3 Client for Node.js, Browser and React Native",
32276
32278
  homepage: "https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-s3",
32277
32279
  license: "Apache-2.0",
@@ -32338,7 +32340,7 @@ var package_default2 = {
32338
32340
  tslib: "^2.6.2"
32339
32341
  },
32340
32342
  devDependencies: {
32341
- "@aws-sdk/signature-v4-crt": "3.1126.0",
32343
+ "@aws-sdk/signature-v4-crt": "3.1127.0",
32342
32344
  "@smithy/snapshot-testing": "^2.3.2",
32343
32345
  "@tsconfig/node20": "20.1.8",
32344
32346
  "@types/node": "^20.14.8",
@@ -32353,7 +32355,7 @@ var package_default2 = {
32353
32355
  }
32354
32356
  };
32355
32357
 
32356
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.js
32358
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.js
32357
32359
  var import_client19 = __toESM(require_client2(), 1);
32358
32360
  var import_httpAuthSchemes3 = __toESM(require_httpAuthSchemes(), 1);
32359
32361
 
@@ -32510,7 +32512,7 @@ var defaultProvider = (init = {}) => memoizeChain([
32510
32512
  }
32511
32513
  ], credentialsTreatedAsExpired);
32512
32514
  var credentialsTreatedAsExpired = (credentials) => credentials?.expiration !== undefined && credentials.expiration.getTime() - Date.now() < 300000;
32513
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.js
32515
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.js
32514
32516
  var import_checksum2 = __toESM(require_checksum(), 1);
32515
32517
  var import_client20 = __toESM(require_client(), 1);
32516
32518
  var import_config28 = __toESM(require_config(), 1);
@@ -32748,7 +32750,7 @@ var subtle = typeof digest === "function" && typeof sign2 === "function" && type
32748
32750
  var MAX_PENDING_BYTES = 8 * 1024 * 1024;
32749
32751
  var $Sha1 = Sha1Node;
32750
32752
 
32751
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.shared.js
32753
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.shared.js
32752
32754
  var import_httpAuthSchemes2 = __toESM(require_httpAuthSchemes(), 1);
32753
32755
  var import_signature_v4_multi_region2 = __toESM(require_dist_cjs4(), 1);
32754
32756
  var import_checksum = __toESM(require_checksum(), 1);
@@ -32800,7 +32802,7 @@ var getRuntimeConfig2 = (config) => {
32800
32802
  };
32801
32803
  };
32802
32804
 
32803
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.js
32805
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.js
32804
32806
  var getRuntimeConfig3 = (config) => {
32805
32807
  import_client20.emitWarningIfUnsupportedVersion(process.version);
32806
32808
  const defaultsMode = import_config28.resolveDefaultsModeConfig(config);
@@ -32841,12 +32843,12 @@ var getRuntimeConfig3 = (config) => {
32841
32843
  };
32842
32844
  };
32843
32845
 
32844
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/runtimeExtensions.js
32846
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/runtimeExtensions.js
32845
32847
  var import_client21 = __toESM(require_client2(), 1);
32846
32848
  var import_client22 = __toESM(require_client(), 1);
32847
32849
  var import_protocols5 = __toESM(require_protocols(), 1);
32848
32850
 
32849
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/auth/httpAuthExtensionConfiguration.js
32851
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/auth/httpAuthExtensionConfiguration.js
32850
32852
  var getHttpAuthExtensionConfiguration2 = (runtimeConfig) => {
32851
32853
  const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;
32852
32854
  let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;
@@ -32885,14 +32887,14 @@ var resolveHttpAuthRuntimeConfig2 = (config) => {
32885
32887
  };
32886
32888
  };
32887
32889
 
32888
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/runtimeExtensions.js
32890
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/runtimeExtensions.js
32889
32891
  var resolveRuntimeExtensions2 = (runtimeConfig, extensions) => {
32890
32892
  const extensionConfiguration = Object.assign(import_client21.getAwsRegionExtensionConfiguration(runtimeConfig), import_client22.getDefaultExtensionConfiguration(runtimeConfig), import_protocols5.getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration2(runtimeConfig));
32891
32893
  extensions.forEach((extension) => extension.configure(extensionConfiguration));
32892
32894
  return Object.assign(runtimeConfig, import_client21.resolveAwsRegionExtensionConfiguration(extensionConfiguration), import_client22.resolveDefaultRuntimeConfig(extensionConfiguration), import_protocols5.resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig2(extensionConfiguration));
32893
32895
  };
32894
32896
 
32895
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/S3Client.js
32897
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/S3Client.js
32896
32898
  class S3Client extends import_client24.Client {
32897
32899
  config;
32898
32900
  constructor(...[configuration]) {
@@ -32937,15 +32939,15 @@ class S3Client extends import_client24.Client {
32937
32939
  }
32938
32940
  }
32939
32941
 
32940
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteObjectCommand.js
32942
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteObjectCommand.js
32941
32943
  class DeleteObjectCommand extends command(_ep0, _mw0, "DeleteObject", DeleteObject$) {
32942
32944
  }
32943
32945
 
32944
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectCommand.js
32946
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectCommand.js
32945
32947
  class GetObjectCommand extends command(_ep0, _mw7, "GetObject", GetObject$) {
32946
32948
  }
32947
32949
 
32948
- // ../../node_modules/.bun/@aws-sdk+client-s3@3.1126.0/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectCommand.js
32950
+ // ../../node_modules/.bun/@aws-sdk+client-s3@3.1127.0/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectCommand.js
32949
32951
  class PutObjectCommand extends command(_ep0, _mw11, "PutObject", PutObject$) {
32950
32952
  }
32951
32953
 
@@ -33232,12 +33234,7 @@ import { homedir as homedir2 } from "os";
33232
33234
  import { join as join2, resolve } from "path";
33233
33235
  import { homedir as pathsResolverHomedir } from "os";
33234
33236
  import { join as pathsResolverJoin } from "path";
33235
- var PATHS_RESOLVER_KIND_ENV = {
33236
- config: "HASNA_CONFIG_HOME",
33237
- data: "HASNA_DATA_HOME",
33238
- state: "HASNA_STATE_HOME",
33239
- cache: "HASNA_CACHE_HOME"
33240
- };
33237
+ var PATHS_RESOLVER_DATA_ENV = "HASNA_DATA_HOME";
33241
33238
  var PATHS_RESOLVER_APP_SLUG_RE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
33242
33239
  function pathsResolverAssertApp(app) {
33243
33240
  if (typeof app !== "string" || app.length === 0) {
@@ -33247,48 +33244,19 @@ function pathsResolverAssertApp(app) {
33247
33244
  throw new TypeError(`paths: invalid app slug "${app}" \u2014 expected lowercase kebab-case ([a-z0-9]+(-[a-z0-9]+)*)`);
33248
33245
  }
33249
33246
  }
33250
- function pathsResolverAssertKind(kind) {
33251
- if (!Object.keys(PATHS_RESOLVER_KIND_ENV).includes(kind)) {
33252
- throw new TypeError(`paths: invalid path kind "${kind}" \u2014 expected one of ${Object.keys(PATHS_RESOLVER_KIND_ENV).join(", ")}`);
33253
- }
33254
- }
33255
- function pathsResolverBaseDir(kind, options) {
33256
- pathsResolverAssertKind(kind);
33247
+ function pathsResolverDataBaseDir(options) {
33257
33248
  const env = options.env ?? process.env;
33258
- const override = env[PATHS_RESOLVER_KIND_ENV[kind]];
33249
+ const override = env[PATHS_RESOLVER_DATA_ENV];
33259
33250
  if (typeof override === "string" && override.length > 0)
33260
33251
  return override;
33261
33252
  const home = options.home ?? pathsResolverHomedir();
33262
33253
  const platform = options.platform ?? process.platform;
33263
- if (platform === "darwin") {
33264
- switch (kind) {
33265
- case "config":
33266
- case "data":
33267
- return pathsResolverJoin(home, "Library", "Application Support", "Hasna");
33268
- case "cache":
33269
- return pathsResolverJoin(home, "Library", "Caches", "Hasna");
33270
- case "state":
33271
- return pathsResolverJoin(home, "Library", "Logs", "Hasna");
33272
- }
33273
- }
33274
- switch (kind) {
33275
- case "config":
33276
- return pathsResolverJoin(home, ".config", "hasna");
33277
- case "data":
33278
- return pathsResolverJoin(home, ".local", "share", "hasna");
33279
- case "state":
33280
- return pathsResolverJoin(home, ".local", "state", "hasna");
33281
- case "cache":
33282
- return pathsResolverJoin(home, ".cache", "hasna");
33283
- }
33254
+ return platform === "darwin" ? pathsResolverJoin(home, "Library", "Application Support", "Hasna") : pathsResolverJoin(home, ".local", "share", "hasna");
33284
33255
  }
33285
- function pathsResolverResolve(kind, options) {
33256
+ function dataDir(options) {
33286
33257
  pathsResolverAssertApp(options.app);
33287
33258
  const appSegment = options.internal === true ? pathsResolverJoin("internal", options.app) : options.app;
33288
- return pathsResolverJoin(pathsResolverBaseDir(kind, options), appSegment);
33289
- }
33290
- function dataDir(options) {
33291
- return pathsResolverResolve("data", options);
33259
+ return pathsResolverJoin(pathsResolverDataBaseDir(options), appSegment);
33292
33260
  }
33293
33261
  var DATA_DIR_ENV = "HASNA_SKILLS_DIR";
33294
33262
  var HASNA_SKILLS_HOME_ENV = "HASNA_SKILLS_HOME";
@@ -1,4 +1,4 @@
1
- import { z } from "zod";
1
+ import { z } from "zod/v3";
2
2
  /** Version of the public, contract-only Skills administration API surface. */
3
3
  export declare const SKILLS_ADMIN_API_CONTRACT_VERSION: "1.0.0";
4
4
  export declare const SKILLS_ADMIN_ENV_URL: "HASNA_SKILLS_API_URL";
@@ -1561,27 +1561,30 @@ export declare const SkillsAdminListUsersResponseSchema: z.ZodObject<{
1561
1561
  users: z.ZodArray<z.ZodObject<{
1562
1562
  id: z.ZodString;
1563
1563
  email: z.ZodString;
1564
- role: z.ZodEnum<["owner", "admin", "member", "viewer"]>;
1565
1564
  organizationId: z.ZodOptional<z.ZodString>;
1566
1565
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1567
1566
  lastLoginAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1568
1567
  createdAt: z.ZodString;
1568
+ } & {
1569
+ role: z.ZodNullable<z.ZodEnum<["owner", "admin", "member", "viewer"]>>;
1569
1570
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
1570
1571
  id: z.ZodString;
1571
1572
  email: z.ZodString;
1572
- role: z.ZodEnum<["owner", "admin", "member", "viewer"]>;
1573
1573
  organizationId: z.ZodOptional<z.ZodString>;
1574
1574
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1575
1575
  lastLoginAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1576
1576
  createdAt: z.ZodString;
1577
+ } & {
1578
+ role: z.ZodNullable<z.ZodEnum<["owner", "admin", "member", "viewer"]>>;
1577
1579
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
1578
1580
  id: z.ZodString;
1579
1581
  email: z.ZodString;
1580
- role: z.ZodEnum<["owner", "admin", "member", "viewer"]>;
1581
1582
  organizationId: z.ZodOptional<z.ZodString>;
1582
1583
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1583
1584
  lastLoginAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1584
1585
  createdAt: z.ZodString;
1586
+ } & {
1587
+ role: z.ZodNullable<z.ZodEnum<["owner", "admin", "member", "viewer"]>>;
1585
1588
  }, z.ZodTypeAny, "passthrough">>, "many">;
1586
1589
  limit: z.ZodNumber;
1587
1590
  offset: z.ZodNumber;
@@ -1589,27 +1592,30 @@ export declare const SkillsAdminListUsersResponseSchema: z.ZodObject<{
1589
1592
  users: z.ZodArray<z.ZodObject<{
1590
1593
  id: z.ZodString;
1591
1594
  email: z.ZodString;
1592
- role: z.ZodEnum<["owner", "admin", "member", "viewer"]>;
1593
1595
  organizationId: z.ZodOptional<z.ZodString>;
1594
1596
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1595
1597
  lastLoginAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1596
1598
  createdAt: z.ZodString;
1599
+ } & {
1600
+ role: z.ZodNullable<z.ZodEnum<["owner", "admin", "member", "viewer"]>>;
1597
1601
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
1598
1602
  id: z.ZodString;
1599
1603
  email: z.ZodString;
1600
- role: z.ZodEnum<["owner", "admin", "member", "viewer"]>;
1601
1604
  organizationId: z.ZodOptional<z.ZodString>;
1602
1605
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1603
1606
  lastLoginAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1604
1607
  createdAt: z.ZodString;
1608
+ } & {
1609
+ role: z.ZodNullable<z.ZodEnum<["owner", "admin", "member", "viewer"]>>;
1605
1610
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
1606
1611
  id: z.ZodString;
1607
1612
  email: z.ZodString;
1608
- role: z.ZodEnum<["owner", "admin", "member", "viewer"]>;
1609
1613
  organizationId: z.ZodOptional<z.ZodString>;
1610
1614
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1611
1615
  lastLoginAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1612
1616
  createdAt: z.ZodString;
1617
+ } & {
1618
+ role: z.ZodNullable<z.ZodEnum<["owner", "admin", "member", "viewer"]>>;
1613
1619
  }, z.ZodTypeAny, "passthrough">>, "many">;
1614
1620
  limit: z.ZodNumber;
1615
1621
  offset: z.ZodNumber;
@@ -1617,27 +1623,30 @@ export declare const SkillsAdminListUsersResponseSchema: z.ZodObject<{
1617
1623
  users: z.ZodArray<z.ZodObject<{
1618
1624
  id: z.ZodString;
1619
1625
  email: z.ZodString;
1620
- role: z.ZodEnum<["owner", "admin", "member", "viewer"]>;
1621
1626
  organizationId: z.ZodOptional<z.ZodString>;
1622
1627
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1623
1628
  lastLoginAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1624
1629
  createdAt: z.ZodString;
1630
+ } & {
1631
+ role: z.ZodNullable<z.ZodEnum<["owner", "admin", "member", "viewer"]>>;
1625
1632
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
1626
1633
  id: z.ZodString;
1627
1634
  email: z.ZodString;
1628
- role: z.ZodEnum<["owner", "admin", "member", "viewer"]>;
1629
1635
  organizationId: z.ZodOptional<z.ZodString>;
1630
1636
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1631
1637
  lastLoginAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1632
1638
  createdAt: z.ZodString;
1639
+ } & {
1640
+ role: z.ZodNullable<z.ZodEnum<["owner", "admin", "member", "viewer"]>>;
1633
1641
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
1634
1642
  id: z.ZodString;
1635
1643
  email: z.ZodString;
1636
- role: z.ZodEnum<["owner", "admin", "member", "viewer"]>;
1637
1644
  organizationId: z.ZodOptional<z.ZodString>;
1638
1645
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1639
1646
  lastLoginAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1640
1647
  createdAt: z.ZodString;
1648
+ } & {
1649
+ role: z.ZodNullable<z.ZodEnum<["owner", "admin", "member", "viewer"]>>;
1641
1650
  }, z.ZodTypeAny, "passthrough">>, "many">;
1642
1651
  limit: z.ZodNumber;
1643
1652
  offset: z.ZodNumber;
@@ -4405,27 +4414,30 @@ export declare const SKILLS_ADMIN_OPERATIONS: {
4405
4414
  users: z.ZodArray<z.ZodObject<{
4406
4415
  id: z.ZodString;
4407
4416
  email: z.ZodString;
4408
- role: z.ZodEnum<["owner", "admin", "member", "viewer"]>;
4409
4417
  organizationId: z.ZodOptional<z.ZodString>;
4410
4418
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4411
4419
  lastLoginAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4412
4420
  createdAt: z.ZodString;
4421
+ } & {
4422
+ role: z.ZodNullable<z.ZodEnum<["owner", "admin", "member", "viewer"]>>;
4413
4423
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
4414
4424
  id: z.ZodString;
4415
4425
  email: z.ZodString;
4416
- role: z.ZodEnum<["owner", "admin", "member", "viewer"]>;
4417
4426
  organizationId: z.ZodOptional<z.ZodString>;
4418
4427
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4419
4428
  lastLoginAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4420
4429
  createdAt: z.ZodString;
4430
+ } & {
4431
+ role: z.ZodNullable<z.ZodEnum<["owner", "admin", "member", "viewer"]>>;
4421
4432
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
4422
4433
  id: z.ZodString;
4423
4434
  email: z.ZodString;
4424
- role: z.ZodEnum<["owner", "admin", "member", "viewer"]>;
4425
4435
  organizationId: z.ZodOptional<z.ZodString>;
4426
4436
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4427
4437
  lastLoginAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4428
4438
  createdAt: z.ZodString;
4439
+ } & {
4440
+ role: z.ZodNullable<z.ZodEnum<["owner", "admin", "member", "viewer"]>>;
4429
4441
  }, z.ZodTypeAny, "passthrough">>, "many">;
4430
4442
  limit: z.ZodNumber;
4431
4443
  offset: z.ZodNumber;
@@ -4433,27 +4445,30 @@ export declare const SKILLS_ADMIN_OPERATIONS: {
4433
4445
  users: z.ZodArray<z.ZodObject<{
4434
4446
  id: z.ZodString;
4435
4447
  email: z.ZodString;
4436
- role: z.ZodEnum<["owner", "admin", "member", "viewer"]>;
4437
4448
  organizationId: z.ZodOptional<z.ZodString>;
4438
4449
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4439
4450
  lastLoginAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4440
4451
  createdAt: z.ZodString;
4452
+ } & {
4453
+ role: z.ZodNullable<z.ZodEnum<["owner", "admin", "member", "viewer"]>>;
4441
4454
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
4442
4455
  id: z.ZodString;
4443
4456
  email: z.ZodString;
4444
- role: z.ZodEnum<["owner", "admin", "member", "viewer"]>;
4445
4457
  organizationId: z.ZodOptional<z.ZodString>;
4446
4458
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4447
4459
  lastLoginAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4448
4460
  createdAt: z.ZodString;
4461
+ } & {
4462
+ role: z.ZodNullable<z.ZodEnum<["owner", "admin", "member", "viewer"]>>;
4449
4463
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
4450
4464
  id: z.ZodString;
4451
4465
  email: z.ZodString;
4452
- role: z.ZodEnum<["owner", "admin", "member", "viewer"]>;
4453
4466
  organizationId: z.ZodOptional<z.ZodString>;
4454
4467
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4455
4468
  lastLoginAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4456
4469
  createdAt: z.ZodString;
4470
+ } & {
4471
+ role: z.ZodNullable<z.ZodEnum<["owner", "admin", "member", "viewer"]>>;
4457
4472
  }, z.ZodTypeAny, "passthrough">>, "many">;
4458
4473
  limit: z.ZodNumber;
4459
4474
  offset: z.ZodNumber;
@@ -4461,27 +4476,30 @@ export declare const SKILLS_ADMIN_OPERATIONS: {
4461
4476
  users: z.ZodArray<z.ZodObject<{
4462
4477
  id: z.ZodString;
4463
4478
  email: z.ZodString;
4464
- role: z.ZodEnum<["owner", "admin", "member", "viewer"]>;
4465
4479
  organizationId: z.ZodOptional<z.ZodString>;
4466
4480
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4467
4481
  lastLoginAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4468
4482
  createdAt: z.ZodString;
4483
+ } & {
4484
+ role: z.ZodNullable<z.ZodEnum<["owner", "admin", "member", "viewer"]>>;
4469
4485
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
4470
4486
  id: z.ZodString;
4471
4487
  email: z.ZodString;
4472
- role: z.ZodEnum<["owner", "admin", "member", "viewer"]>;
4473
4488
  organizationId: z.ZodOptional<z.ZodString>;
4474
4489
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4475
4490
  lastLoginAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4476
4491
  createdAt: z.ZodString;
4492
+ } & {
4493
+ role: z.ZodNullable<z.ZodEnum<["owner", "admin", "member", "viewer"]>>;
4477
4494
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
4478
4495
  id: z.ZodString;
4479
4496
  email: z.ZodString;
4480
- role: z.ZodEnum<["owner", "admin", "member", "viewer"]>;
4481
4497
  organizationId: z.ZodOptional<z.ZodString>;
4482
4498
  metadata: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4483
4499
  lastLoginAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4484
4500
  createdAt: z.ZodString;
4501
+ } & {
4502
+ role: z.ZodNullable<z.ZodEnum<["owner", "admin", "member", "viewer"]>>;
4485
4503
  }, z.ZodTypeAny, "passthrough">>, "many">;
4486
4504
  limit: z.ZodNumber;
4487
4505
  offset: z.ZodNumber;
@@ -4249,7 +4249,7 @@ var SkillsAdminSuspendOrganizationResponseSchema = exports_external.object({
4249
4249
  organization: exports_external.object({ id: identifier, slug: exports_external.string().min(1), metadata }).passthrough()
4250
4250
  }).passthrough();
4251
4251
  var SkillsAdminListUsersResponseSchema = exports_external.object({
4252
- users: exports_external.array(SkillsAdminUserSchema),
4252
+ users: exports_external.array(SkillsAdminUserSchema.extend({ role: SkillsAdminUserSchema.shape.role.nullable() })),
4253
4253
  limit: positiveInt,
4254
4254
  offset: nonNegativeInt
4255
4255
  }).passthrough();
@@ -16,15 +16,17 @@ export declare const PACKAGE_VERSION: string;
16
16
  export declare const SLOW_TEST_TIMEOUT = 30000;
17
17
  export declare const CLEAN_CLI_HOME: string;
18
18
  /**
19
- * The one line an unconfigured install is allowed to print on stderr.
19
+ * The one line an opted-in local install is allowed to print on stderr.
20
20
  *
21
- * Local mode announces itself (owner ruling 2026-09-04, hasna/apps#1720): with no
22
- * credential and no API URL, the CLI says once, per process, that it is running
23
- * on this machine. That is not the deleted onboarding nudge — it demands no
24
- * choice and asks no question — but it does mean "stderr is empty" is the wrong
25
- * assertion for a local command. Use {@link stderrWithoutLocalNotice}, which
26
- * strips exactly this line and nothing else, so an unexpected warning still
27
- * fails the test it would have failed before.
21
+ * Local mode is opt-in only and announces itself (owner ruling 2026-09-04,
22
+ * hasna/apps#1720; class-patch order 2026-09-06): with the explicit
23
+ * `HASNA_SKILLS_LOCAL=1` opt-in and no API credential or URL, the CLI says
24
+ * once, per process, that it is running on this machine. The harness below
25
+ * passes the opt-in itself, so the suite's local runs are deliberate ones
26
+ * and "stderr is empty" remains the wrong assertion for a local command. Use
27
+ * {@link stderrWithoutLocalNotice}, which strips exactly this line and nothing
28
+ * else, so an unexpected warning still fails the test it would have failed
29
+ * before.
28
30
  */
29
31
  export declare const LOCAL_MODE_NOTICE_MARKER = "skills: local mode";
30
32
  /** `stderr` with the single local-mode notice line removed. */
@@ -0,0 +1,2 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerCustomerProfileCommands(program: Command): void;
@@ -0,0 +1,5 @@
1
+ export declare class NameInputError extends Error {
2
+ }
3
+ /** OTP enters through stdin, never a new command-line credential argument. */
4
+ export declare function readCode(): Promise<string>;
5
+ export declare function promptCode(): Promise<string | null>;
@@ -1,2 +1,2 @@
1
- import type { Command } from "commander";
1
+ import { type Command } from "commander";
2
2
  export declare function registerToolPrimitives(parent: Command): void;
@@ -0,0 +1,2 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerWorkspaceMemberMutationCommands(workspace: Command): void;
@@ -0,0 +1,2 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerWorkspaceMembersCommand(workspace: Command): void;
@@ -0,0 +1,11 @@
1
+ import type { Command } from "commander";
2
+ type Options = {
3
+ email?: string;
4
+ codeStdin?: boolean;
5
+ json?: boolean;
6
+ };
7
+ export declare function registerWorkspaceListCommand(workspace: Command): void;
8
+ export declare function loginWorkspace(options: Options & {
9
+ membershipId: string;
10
+ }): Promise<void>;
11
+ export {};
@@ -0,0 +1,9 @@
1
+ export declare class EnvAssignmentError extends Error {
2
+ }
3
+ /** Change only exact assignments to one valid key; reject ambiguous layouts before any write. */
4
+ export declare function prepareEnvAssignment(assignment: string, existing: string): {
5
+ key: string;
6
+ content: string;
7
+ };
8
+ /** Use one regular-file descriptor; never follow a link or create a file for invalid input. */
9
+ export declare function setEnvAssignment(path: string, assignment: string): string;