@hasna/instructions 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +149 -8
- package/dist/chunks/apply-7svah2qm.js +25 -0
- package/dist/chunks/apply-jp13sa1e.js +25 -0
- package/dist/chunks/database-wstmr56z.js +23 -0
- package/dist/chunks/index-1cnyjnd7.js +623 -0
- package/dist/chunks/index-35z65jsa.js +198 -0
- package/dist/chunks/index-3djthcm6.js +117 -0
- package/dist/chunks/index-4pfq42t5.js +7300 -0
- package/dist/chunks/index-5d7zdftc.js +186 -0
- package/dist/chunks/index-7m4j8a33.js +12578 -0
- package/dist/chunks/index-8rb7ng2y.js +148 -0
- package/dist/chunks/index-arrrx0ed.js +344 -0
- package/dist/chunks/index-bsan4c16.js +48 -0
- package/dist/chunks/index-bzyxvwcd.js +625 -0
- package/dist/chunks/index-fpeyzn3n.js +186 -0
- package/dist/chunks/index-fwbs6tma.js +534 -0
- package/dist/chunks/index-ma2xmp6c.js +14 -0
- package/dist/chunks/index-n3fjspr0.js +119 -0
- package/dist/chunks/index-nnwp92tk.js +19 -0
- package/dist/chunks/index-z3ma4aqk.js +532 -0
- package/dist/chunks/legacy-store-migration-z2m5yzyk.js +322 -0
- package/dist/chunks/local-5wvv5xv3.js +694 -0
- package/dist/chunks/local-zxa5dpf4.js +518 -0
- package/dist/chunks/package-manager-guard-x70xrwk2.js +391 -0
- package/dist/chunks/redact-hnq4sc4r.js +16 -0
- package/dist/chunks/s3-backup-n2z4fwyh.js +240 -0
- package/dist/chunks/s3-config-hhght91k.js +14 -0
- package/dist/chunks/s3-object-store-90tgbh6k.js +14 -0
- package/dist/chunks/sync-2075deve.js +34 -0
- package/dist/chunks/sync-r8t7zsp3.js +34 -0
- package/dist/chunks/template-fsfxpe4p.js +16 -0
- package/dist/chunks/template-wgnzdn7h.js +16 -0
- package/dist/cli/index.js +1681 -15643
- package/dist/data/config-store.d.ts +2 -1
- package/dist/data/config-store.d.ts.map +1 -1
- package/dist/db/database.d.ts +3 -5
- package/dist/db/database.d.ts.map +1 -1
- package/dist/db/local.d.ts +38 -0
- package/dist/db/local.d.ts.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13809 -12998
- package/dist/lib/apply.d.ts +7 -0
- package/dist/lib/apply.d.ts.map +1 -1
- package/dist/lib/compact-output.d.ts +1 -0
- package/dist/lib/compact-output.d.ts.map +1 -1
- package/dist/lib/export.d.ts +22 -3
- package/dist/lib/export.d.ts.map +1 -1
- package/dist/lib/ids.d.ts +4 -0
- package/dist/lib/ids.d.ts.map +1 -0
- package/dist/lib/import.d.ts +18 -0
- package/dist/lib/import.d.ts.map +1 -1
- package/dist/lib/instruction-graph.d.ts.map +1 -1
- package/dist/lib/legacy-store-migration.d.ts +39 -0
- package/dist/lib/legacy-store-migration.d.ts.map +1 -0
- package/dist/lib/managed-skill-runtimes.d.ts +1 -0
- package/dist/lib/managed-skill-runtimes.d.ts.map +1 -1
- package/dist/lib/session-render.d.ts +3 -0
- package/dist/lib/session-render.d.ts.map +1 -1
- package/dist/lib/sync-dir.d.ts.map +1 -1
- package/dist/mcp/index.js +73 -9462
- package/dist/sdk/index.d.ts +2 -0
- package/dist/sdk/index.d.ts.map +1 -1
- package/dist/sdk/index.js +205 -10
- package/dist/sdk/resolve.d.ts +1 -1
- package/dist/sdk/resolve.d.ts.map +1 -1
- package/dist/sdk/v1-client.d.ts +57 -0
- package/dist/sdk/v1-client.d.ts.map +1 -0
- package/dist/sdk/v1.generated.d.ts +212 -21
- package/dist/sdk/v1.generated.d.ts.map +1 -1
- package/dist/server/cloud.d.ts.map +1 -1
- package/dist/server/index.d.ts +13 -5
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +8337 -7495
- package/dist/server/openapi.d.ts +1264 -92
- package/dist/server/openapi.d.ts.map +1 -1
- package/dist/server/v1.d.ts +25 -1
- package/dist/server/v1.d.ts.map +1 -1
- package/dist/status.d.ts +12 -2
- package/dist/status.d.ts.map +1 -1
- package/dist/storage/cloud-store.d.ts +57 -1
- package/dist/storage/cloud-store.d.ts.map +1 -1
- package/dist/storage/index.d.ts +7 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +725 -0
- package/dist/storage/s3-backup.d.ts +76 -0
- package/dist/storage/s3-backup.d.ts.map +1 -0
- package/dist/storage/s3-config.d.ts +46 -0
- package/dist/storage/s3-config.d.ts.map +1 -0
- package/dist/storage/s3-object-store.d.ts +70 -0
- package/dist/storage/s3-object-store.d.ts.map +1 -0
- package/dist/types/index.d.ts +65 -3
- package/dist/types/index.d.ts.map +1 -1
- package/hasna.contract.json +110 -0
- package/migrations/0001_instructions.sql +63 -0
- package/migrations/0002_api_keys.sql +20 -0
- package/migrations/0003_idempotency_receipts.sql +24 -0
- package/package.json +29 -14
- package/assets/skills/inbox/SKILL.md +0 -86
- package/dist/cli/add-duplicate-target.test.d.ts +0 -2
- package/dist/cli/add-duplicate-target.test.d.ts.map +0 -1
- package/dist/cli/add-reference-update.test.d.ts +0 -2
- package/dist/cli/add-reference-update.test.d.ts.map +0 -1
- package/dist/cli/apply-unchanged-snapshot-bloat.test.d.ts +0 -2
- package/dist/cli/apply-unchanged-snapshot-bloat.test.d.ts.map +0 -1
- package/dist/cli/doctor-reference-duplicates.test.d.ts +0 -2
- package/dist/cli/doctor-reference-duplicates.test.d.ts.map +0 -1
- package/dist/cli/fail-closed-no-env.test.d.ts +0 -2
- package/dist/cli/fail-closed-no-env.test.d.ts.map +0 -1
- package/dist/cli/output.test.d.ts +0 -2
- package/dist/cli/output.test.d.ts.map +0 -1
- package/dist/cli/profile-binding.test.d.ts +0 -2
- package/dist/cli/profile-binding.test.d.ts.map +0 -1
- package/dist/cli/profile-reads.test.d.ts +0 -2
- package/dist/cli/profile-reads.test.d.ts.map +0 -1
- package/dist/cli/profile-update.test.d.ts +0 -2
- package/dist/cli/profile-update.test.d.ts.map +0 -1
- package/dist/cli/project-context.test.d.ts +0 -2
- package/dist/cli/project-context.test.d.ts.map +0 -1
- package/dist/cli/raw-store-root.test.d.ts +0 -2
- package/dist/cli/raw-store-root.test.d.ts.map +0 -1
- package/dist/cli/session-apply-managed-input-bound.test.d.ts +0 -2
- package/dist/cli/session-apply-managed-input-bound.test.d.ts.map +0 -1
- package/dist/cli/session.test.d.ts +0 -2
- package/dist/cli/session.test.d.ts.map +0 -1
- package/dist/cli/station-profile.test.d.ts +0 -2
- package/dist/cli/station-profile.test.d.ts.map +0 -1
- package/dist/data/config-store.test.d.ts +0 -2
- package/dist/data/config-store.test.d.ts.map +0 -1
- package/dist/db/configs.test.d.ts +0 -2
- package/dist/db/configs.test.d.ts.map +0 -1
- package/dist/db/database.test.d.ts +0 -2
- package/dist/db/database.test.d.ts.map +0 -1
- package/dist/db/machines.test.d.ts +0 -2
- package/dist/db/machines.test.d.ts.map +0 -1
- package/dist/db/profile-assets.test.d.ts +0 -2
- package/dist/db/profile-assets.test.d.ts.map +0 -1
- package/dist/db/profile-config-bindings.test.d.ts +0 -2
- package/dist/db/profile-config-bindings.test.d.ts.map +0 -1
- package/dist/db/profiles.test.d.ts +0 -2
- package/dist/db/profiles.test.d.ts.map +0 -1
- package/dist/db/snapshots.test.d.ts +0 -2
- package/dist/db/snapshots.test.d.ts.map +0 -1
- package/dist/lib/app-home.test.d.ts +0 -2
- package/dist/lib/app-home.test.d.ts.map +0 -1
- package/dist/lib/apply-batch.test.d.ts +0 -2
- package/dist/lib/apply-batch.test.d.ts.map +0 -1
- package/dist/lib/apply-dry-run-verdict.test.d.ts +0 -2
- package/dist/lib/apply-dry-run-verdict.test.d.ts.map +0 -1
- package/dist/lib/apply-secret-placeholder-guard.test.d.ts +0 -2
- package/dist/lib/apply-secret-placeholder-guard.test.d.ts.map +0 -1
- package/dist/lib/apply-text-format-credential-guard.test.d.ts +0 -2
- package/dist/lib/apply-text-format-credential-guard.test.d.ts.map +0 -1
- package/dist/lib/apply.test.d.ts +0 -2
- package/dist/lib/apply.test.d.ts.map +0 -1
- package/dist/lib/asset-plan.test.d.ts +0 -2
- package/dist/lib/asset-plan.test.d.ts.map +0 -1
- package/dist/lib/client-types.test.d.ts +0 -2
- package/dist/lib/client-types.test.d.ts.map +0 -1
- package/dist/lib/codewith-shared-todos-storage-standard.test.d.ts +0 -2
- package/dist/lib/codewith-shared-todos-storage-standard.test.d.ts.map +0 -1
- package/dist/lib/compact-output.test.d.ts +0 -2
- package/dist/lib/compact-output.test.d.ts.map +0 -1
- package/dist/lib/config-target-identity.test.d.ts +0 -2
- package/dist/lib/config-target-identity.test.d.ts.map +0 -1
- package/dist/lib/cursor-authority.test.d.ts +0 -2
- package/dist/lib/cursor-authority.test.d.ts.map +0 -1
- package/dist/lib/dangerous-operation-guard-standard.test.d.ts +0 -2
- package/dist/lib/dangerous-operation-guard-standard.test.d.ts.map +0 -1
- package/dist/lib/diff-redaction.test.d.ts +0 -2
- package/dist/lib/diff-redaction.test.d.ts.map +0 -1
- package/dist/lib/export-import.test.d.ts +0 -2
- package/dist/lib/export-import.test.d.ts.map +0 -1
- package/dist/lib/global-agent-rules-render-integration.test.d.ts +0 -2
- package/dist/lib/global-agent-rules-render-integration.test.d.ts.map +0 -1
- package/dist/lib/global-agent-rules-standard.test.d.ts +0 -2
- package/dist/lib/global-agent-rules-standard.test.d.ts.map +0 -1
- package/dist/lib/global-agent-rules-stored-content.test.d.ts +0 -2
- package/dist/lib/global-agent-rules-stored-content.test.d.ts.map +0 -1
- package/dist/lib/global-source-coverage.test.d.ts +0 -2
- package/dist/lib/global-source-coverage.test.d.ts.map +0 -1
- package/dist/lib/instruction-graph-apply.test.d.ts +0 -2
- package/dist/lib/instruction-graph-apply.test.d.ts.map +0 -1
- package/dist/lib/instruction-graph.test.d.ts +0 -2
- package/dist/lib/instruction-graph.test.d.ts.map +0 -1
- package/dist/lib/machine.test.d.ts +0 -2
- package/dist/lib/machine.test.d.ts.map +0 -1
- package/dist/lib/managed-skill-runtimes.test.d.ts +0 -2
- package/dist/lib/managed-skill-runtimes.test.d.ts.map +0 -1
- package/dist/lib/package-manager-guard.test.d.ts +0 -2
- package/dist/lib/package-manager-guard.test.d.ts.map +0 -1
- package/dist/lib/project-context-prepared-file.test.d.ts +0 -2
- package/dist/lib/project-context-prepared-file.test.d.ts.map +0 -1
- package/dist/lib/project-context.test.d.ts +0 -2
- package/dist/lib/project-context.test.d.ts.map +0 -1
- package/dist/lib/project-dashboard-standard.test.d.ts +0 -2
- package/dist/lib/project-dashboard-standard.test.d.ts.map +0 -1
- package/dist/lib/provider-assets-adapters.test.d.ts +0 -2
- package/dist/lib/provider-assets-adapters.test.d.ts.map +0 -1
- package/dist/lib/provider-context.test.d.ts +0 -2
- package/dist/lib/provider-context.test.d.ts.map +0 -1
- package/dist/lib/provider-version-adapters.test.d.ts +0 -2
- package/dist/lib/provider-version-adapters.test.d.ts.map +0 -1
- package/dist/lib/redact.test.d.ts +0 -2
- package/dist/lib/redact.test.d.ts.map +0 -1
- package/dist/lib/session-apply.test.d.ts +0 -2
- package/dist/lib/session-apply.test.d.ts.map +0 -1
- package/dist/lib/session-authority.test.d.ts +0 -2
- package/dist/lib/session-authority.test.d.ts.map +0 -1
- package/dist/lib/session-render-managed-output-bound.test.d.ts +0 -2
- package/dist/lib/session-render-managed-output-bound.test.d.ts.map +0 -1
- package/dist/lib/session-render-ownership.test.d.ts +0 -2
- package/dist/lib/session-render-ownership.test.d.ts.map +0 -1
- package/dist/lib/session-render-rule-currency-floor.test.d.ts +0 -2
- package/dist/lib/session-render-rule-currency-floor.test.d.ts.map +0 -1
- package/dist/lib/session-render-silent-source-drop.test.d.ts +0 -2
- package/dist/lib/session-render-silent-source-drop.test.d.ts.map +0 -1
- package/dist/lib/session-render-state-hermeticity.test.d.ts +0 -2
- package/dist/lib/session-render-state-hermeticity.test.d.ts.map +0 -1
- package/dist/lib/session-render-state.test.d.ts +0 -2
- package/dist/lib/session-render-state.test.d.ts.map +0 -1
- package/dist/lib/session-render.test.d.ts +0 -2
- package/dist/lib/session-render.test.d.ts.map +0 -1
- package/dist/lib/station-profile.test.d.ts +0 -2
- package/dist/lib/station-profile.test.d.ts.map +0 -1
- package/dist/lib/sync-dir.test.d.ts +0 -2
- package/dist/lib/sync-dir.test.d.ts.map +0 -1
- package/dist/lib/sync-dry-run-unchanged.test.d.ts +0 -2
- package/dist/lib/sync-dry-run-unchanged.test.d.ts.map +0 -1
- package/dist/lib/sync-known.test.d.ts +0 -2
- package/dist/lib/sync-known.test.d.ts.map +0 -1
- package/dist/lib/sync.test.d.ts +0 -2
- package/dist/lib/sync.test.d.ts.map +0 -1
- package/dist/lib/template.test.d.ts +0 -2
- package/dist/lib/template.test.d.ts.map +0 -1
- package/dist/lib/transforms.test.d.ts +0 -2
- package/dist/lib/transforms.test.d.ts.map +0 -1
- package/dist/lib/transport-resolver.test.d.ts +0 -2
- package/dist/lib/transport-resolver.test.d.ts.map +0 -1
- package/dist/mcp/create-config-target-guard.test.d.ts +0 -2
- package/dist/mcp/create-config-target-guard.test.d.ts.map +0 -1
- package/dist/mcp/early-args.test.d.ts +0 -2
- package/dist/mcp/early-args.test.d.ts.map +0 -1
- package/dist/mcp/http.test.d.ts +0 -2
- package/dist/mcp/http.test.d.ts.map +0 -1
- package/dist/mcp/mcp.test.d.ts +0 -2
- package/dist/mcp/mcp.test.d.ts.map +0 -1
- package/dist/sdk/resolve.test.d.ts +0 -2
- package/dist/sdk/resolve.test.d.ts.map +0 -1
- package/dist/sdk/sdk-bundle-self-contained.test.d.ts +0 -2
- package/dist/sdk/sdk-bundle-self-contained.test.d.ts.map +0 -1
- package/dist/server/cloud-auth.test.d.ts +0 -2
- package/dist/server/cloud-auth.test.d.ts.map +0 -1
- package/dist/server/cloud.test.d.ts +0 -2
- package/dist/server/cloud.test.d.ts.map +0 -1
- package/dist/server/early-args.test.d.ts +0 -2
- package/dist/server/early-args.test.d.ts.map +0 -1
- package/dist/server/profile-contract.test.d.ts +0 -2
- package/dist/server/profile-contract.test.d.ts.map +0 -1
- package/dist/status.test.d.ts +0 -2
- package/dist/status.test.d.ts.map +0 -1
- package/dist/storage/cloud-store.test.d.ts +0 -2
- package/dist/storage/cloud-store.test.d.ts.map +0 -1
- package/dist/test-support/preload-state-home.d.ts +0 -2
- package/dist/test-support/preload-state-home.d.ts.map +0 -1
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/lib/raw-store-root.ts
|
|
3
|
+
import { resolve as resolve2 } from "path";
|
|
4
|
+
|
|
5
|
+
// src/lib/app-home.ts
|
|
6
|
+
import { existsSync } from "fs";
|
|
7
|
+
import { homedir } from "os";
|
|
8
|
+
import { join, resolve } from "path";
|
|
9
|
+
import { homedir as pathsResolverHomedir } from "os";
|
|
10
|
+
import { join as pathsResolverJoin } from "path";
|
|
11
|
+
var PATHS_RESOLVER_KIND_ENV = {
|
|
12
|
+
config: "HASNA_CONFIG_HOME",
|
|
13
|
+
data: "HASNA_DATA_HOME",
|
|
14
|
+
state: "HASNA_STATE_HOME",
|
|
15
|
+
cache: "HASNA_CACHE_HOME"
|
|
16
|
+
};
|
|
17
|
+
var PATHS_RESOLVER_APP_SLUG_RE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
18
|
+
function pathsResolverAssertApp(app) {
|
|
19
|
+
if (typeof app !== "string" || app.length === 0) {
|
|
20
|
+
throw new TypeError("paths: app must be a non-empty string");
|
|
21
|
+
}
|
|
22
|
+
if (!PATHS_RESOLVER_APP_SLUG_RE.test(app)) {
|
|
23
|
+
throw new TypeError(`paths: invalid app slug "${app}" \u2014 expected lowercase kebab-case ([a-z0-9]+(-[a-z0-9]+)*)`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function pathsResolverAssertKind(kind) {
|
|
27
|
+
if (!Object.keys(PATHS_RESOLVER_KIND_ENV).includes(kind)) {
|
|
28
|
+
throw new TypeError(`paths: invalid path kind "${kind}" \u2014 expected one of ${Object.keys(PATHS_RESOLVER_KIND_ENV).join(", ")}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function pathsResolverBaseDir(kind, options) {
|
|
32
|
+
pathsResolverAssertKind(kind);
|
|
33
|
+
const env = options.env ?? process.env;
|
|
34
|
+
const override = env[PATHS_RESOLVER_KIND_ENV[kind]];
|
|
35
|
+
if (typeof override === "string" && override.length > 0)
|
|
36
|
+
return override;
|
|
37
|
+
const home = options.home ?? pathsResolverHomedir();
|
|
38
|
+
const platform = options.platform ?? process.platform;
|
|
39
|
+
if (platform === "darwin") {
|
|
40
|
+
switch (kind) {
|
|
41
|
+
case "config":
|
|
42
|
+
case "data":
|
|
43
|
+
return pathsResolverJoin(home, "Library", "Application Support", "Hasna");
|
|
44
|
+
case "cache":
|
|
45
|
+
return pathsResolverJoin(home, "Library", "Caches", "Hasna");
|
|
46
|
+
case "state":
|
|
47
|
+
return pathsResolverJoin(home, "Library", "Logs", "Hasna");
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
switch (kind) {
|
|
51
|
+
case "config":
|
|
52
|
+
return pathsResolverJoin(home, ".config", "hasna");
|
|
53
|
+
case "data":
|
|
54
|
+
return pathsResolverJoin(home, ".local", "share", "hasna");
|
|
55
|
+
case "state":
|
|
56
|
+
return pathsResolverJoin(home, ".local", "state", "hasna");
|
|
57
|
+
case "cache":
|
|
58
|
+
return pathsResolverJoin(home, ".cache", "hasna");
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function pathsResolverResolve(kind, options) {
|
|
62
|
+
pathsResolverAssertApp(options.app);
|
|
63
|
+
const appSegment = options.internal === true ? pathsResolverJoin("internal", options.app) : options.app;
|
|
64
|
+
return pathsResolverJoin(pathsResolverBaseDir(kind, options), appSegment);
|
|
65
|
+
}
|
|
66
|
+
function configDir(options) {
|
|
67
|
+
return pathsResolverResolve("config", options);
|
|
68
|
+
}
|
|
69
|
+
var HASNA_CONFIGS_HOME_ENV = "HASNA_CONFIGS_HOME";
|
|
70
|
+
function homeDir(env = process.env) {
|
|
71
|
+
return env["HOME"] || env["USERPROFILE"] || homedir();
|
|
72
|
+
}
|
|
73
|
+
function legacyStoreHome(env = process.env) {
|
|
74
|
+
return resolve(join(homeDir(env), ".hasna", "instructions"));
|
|
75
|
+
}
|
|
76
|
+
function resolverStoreHome(env = process.env) {
|
|
77
|
+
return configDir({ app: "configs", env, home: env.HOME || env.USERPROFILE || homedir() });
|
|
78
|
+
}
|
|
79
|
+
function adoptResolverStoreHome(resolved, env = process.env) {
|
|
80
|
+
const override = env.HASNA_CONFIG_HOME;
|
|
81
|
+
if (typeof override === "string" && override.trim().length > 0)
|
|
82
|
+
return true;
|
|
83
|
+
return existsSync(join(resolved, "instructions.db"));
|
|
84
|
+
}
|
|
85
|
+
function exactStoreHome(env = process.env) {
|
|
86
|
+
const v = env[HASNA_CONFIGS_HOME_ENV];
|
|
87
|
+
return v && v.trim() ? v.trim() : undefined;
|
|
88
|
+
}
|
|
89
|
+
function getConfigsStoreHome(env = process.env) {
|
|
90
|
+
const exact = exactStoreHome(env);
|
|
91
|
+
if (exact)
|
|
92
|
+
return resolve(exact);
|
|
93
|
+
const resolved = resolverStoreHome(env);
|
|
94
|
+
return adoptResolverStoreHome(resolved, env) ? resolve(resolved) : legacyStoreHome(env);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// src/lib/raw-store-root.ts
|
|
98
|
+
function getRawStoreRoot(env = process.env) {
|
|
99
|
+
return resolve2(getConfigsStoreHome(env));
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// ../../node_modules/.bun/@hasna+contracts@1.0.2+e8014c875821e0be/node_modules/@hasna/contracts/dist/client/transport.js
|
|
103
|
+
import { createRequire } from "module";
|
|
104
|
+
function envToken(name) {
|
|
105
|
+
return name.toUpperCase().replace(/-/g, "_");
|
|
106
|
+
}
|
|
107
|
+
function clientTransportEnvKeys(name) {
|
|
108
|
+
const envSegment = envToken(name);
|
|
109
|
+
return {
|
|
110
|
+
apiUrlKeys: [`HASNA_${envSegment}_API_URL`, `${envSegment}_API_URL`],
|
|
111
|
+
apiKeyKeys: [`HASNA_${envSegment}_API_KEY`, `${envSegment}_API_KEY`]
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function credentialOverrideEnvKey(name) {
|
|
115
|
+
return `HASNA_${envToken(name)}_API_KEY_OVERRIDE`;
|
|
116
|
+
}
|
|
117
|
+
var CREDENTIAL_PROFILE_ENV_KEY = "HASNA_PROFILE";
|
|
118
|
+
function credentialPointerEnvKey(name) {
|
|
119
|
+
return `HASNA_${envToken(name)}_API_KEY_REF`;
|
|
120
|
+
}
|
|
121
|
+
var MAX_CREDENTIAL_FILE_BYTES = 64 * 1024;
|
|
122
|
+
var INSPECT_CUSTOM = Symbol.for("nodejs.util.inspect.custom");
|
|
123
|
+
var CREDENTIAL_SEAL = Symbol.for("hasna:contracts:sealedCredential");
|
|
124
|
+
var AMBIENT_ENVIRONMENT = Symbol.for("hasna:contracts:ambientClientEnvironment");
|
|
125
|
+
var SECRETS_PACKAGE_SPECIFIER = "@hasna/" + "secrets";
|
|
126
|
+
var requireSecretsSdk = createRequire(import.meta.url);
|
|
127
|
+
var IDEMPOTENT_METHODS = new Set(["GET", "HEAD", "PUT", "DELETE", "OPTIONS"]);
|
|
128
|
+
var AUTHORITY_OVERRIDE_HEADERS = new Set([
|
|
129
|
+
"host",
|
|
130
|
+
":authority",
|
|
131
|
+
"forwarded",
|
|
132
|
+
"x-forwarded-host",
|
|
133
|
+
"x-original-host"
|
|
134
|
+
]);
|
|
135
|
+
|
|
136
|
+
// src/lib/local-opt-in.ts
|
|
137
|
+
var INSTRUCTIONS_LOCAL_OPT_IN_ENV_KEYS = ["HASNA_INSTRUCTIONS_LOCAL"];
|
|
138
|
+
function instructionsLocalModeNotice() {
|
|
139
|
+
return `instructions: local mode \u2014 ${INSTRUCTIONS_LOCAL_OPT_IN_ENV_KEYS[0]}=1 selects the on-box SQLite store, ` + `and no hosted authority was configured. Set HASNA_INSTRUCTIONS_API_KEY (or add the Keychain item ` + `hasna.credentials.instructions.api-key, or write ~/.hasna/instructions/config/credentials) to go hosted.`;
|
|
140
|
+
}
|
|
141
|
+
function isInstructionsLocalOptIn(env = process.env) {
|
|
142
|
+
return INSTRUCTIONS_LOCAL_OPT_IN_ENV_KEYS.some((key) => (env[key] ?? "").trim() === "1");
|
|
143
|
+
}
|
|
144
|
+
function instructionsAuthorityEnvKeys() {
|
|
145
|
+
const keys = clientTransportEnvKeys("instructions");
|
|
146
|
+
return [
|
|
147
|
+
...keys.apiUrlKeys,
|
|
148
|
+
...keys.apiKeyKeys,
|
|
149
|
+
credentialOverrideEnvKey("instructions"),
|
|
150
|
+
credentialPointerEnvKey("instructions"),
|
|
151
|
+
CREDENTIAL_PROFILE_ENV_KEY
|
|
152
|
+
];
|
|
153
|
+
}
|
|
154
|
+
function hasInstructionsEnvAuthorityIntent(env = process.env) {
|
|
155
|
+
return instructionsAuthorityEnvKeys().some((key) => (env[key] ?? "").trim() !== "");
|
|
156
|
+
}
|
|
157
|
+
function selectsInstructionsLocalStore(env = process.env) {
|
|
158
|
+
return !hasInstructionsEnvAuthorityIntent(env) && isInstructionsLocalOptIn(env);
|
|
159
|
+
}
|
|
160
|
+
function instructionsResolverEnv(env) {
|
|
161
|
+
const blanks = instructionsAuthorityEnvKeys().filter((key) => (key in env) && (env[key] ?? "").trim() === "");
|
|
162
|
+
if (blanks.length === 0)
|
|
163
|
+
return env;
|
|
164
|
+
const next = { ...env };
|
|
165
|
+
for (const key of blanks)
|
|
166
|
+
delete next[key];
|
|
167
|
+
return next;
|
|
168
|
+
}
|
|
169
|
+
var CONTRACTS_AMBIENT_ENVIRONMENT = Symbol.for("hasna:contracts:ambientClientEnvironment");
|
|
170
|
+
function isAmbientInstructionsEnv(env) {
|
|
171
|
+
if (typeof process !== "undefined" && env === process.env)
|
|
172
|
+
return true;
|
|
173
|
+
return env[CONTRACTS_AMBIENT_ENVIRONMENT] === true;
|
|
174
|
+
}
|
|
175
|
+
function instructionsResolverInputs(env, credentials = {}) {
|
|
176
|
+
const normalised = instructionsResolverEnv(env);
|
|
177
|
+
if (normalised === env)
|
|
178
|
+
return { env: normalised, credentials };
|
|
179
|
+
const keychain = { ...credentials.keychain };
|
|
180
|
+
if (keychain.enabled === undefined && keychain.run === undefined) {
|
|
181
|
+
keychain.enabled = isAmbientInstructionsEnv(env);
|
|
182
|
+
}
|
|
183
|
+
return { env: normalised, credentials: { ...credentials, keychain } };
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
export { getRawStoreRoot, clientTransportEnvKeys, INSTRUCTIONS_LOCAL_OPT_IN_ENV_KEYS, instructionsLocalModeNotice, hasInstructionsEnvAuthorityIntent, selectsInstructionsLocalStore, instructionsResolverInputs };
|