@heychunky/core 0.1.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.
Files changed (118) hide show
  1. package/README.md +2 -0
  2. package/dist/admin/apps.d.ts +49 -0
  3. package/dist/admin/apps.d.ts.map +1 -0
  4. package/dist/admin/apps.js +97 -0
  5. package/dist/admin/apps.js.map +1 -0
  6. package/dist/admin/index.d.ts +26 -0
  7. package/dist/admin/index.d.ts.map +1 -0
  8. package/dist/admin/index.js +27 -0
  9. package/dist/admin/index.js.map +1 -0
  10. package/dist/admin/master.d.ts +9 -0
  11. package/dist/admin/master.d.ts.map +1 -0
  12. package/dist/admin/master.js +14 -0
  13. package/dist/admin/master.js.map +1 -0
  14. package/dist/admin/provision.d.ts +42 -0
  15. package/dist/admin/provision.d.ts.map +1 -0
  16. package/dist/admin/provision.js +157 -0
  17. package/dist/admin/provision.js.map +1 -0
  18. package/dist/admin/run.d.ts +89 -0
  19. package/dist/admin/run.d.ts.map +1 -0
  20. package/dist/admin/run.js +218 -0
  21. package/dist/admin/run.js.map +1 -0
  22. package/dist/admin/secrets/infisical.d.ts +45 -0
  23. package/dist/admin/secrets/infisical.d.ts.map +1 -0
  24. package/dist/admin/secrets/infisical.js +182 -0
  25. package/dist/admin/secrets/infisical.js.map +1 -0
  26. package/dist/admin/services/agentmail.d.ts +16 -0
  27. package/dist/admin/services/agentmail.d.ts.map +1 -0
  28. package/dist/admin/services/agentmail.js +43 -0
  29. package/dist/admin/services/agentmail.js.map +1 -0
  30. package/dist/admin/services/ai-gateway.d.ts +13 -0
  31. package/dist/admin/services/ai-gateway.d.ts.map +1 -0
  32. package/dist/admin/services/ai-gateway.js +32 -0
  33. package/dist/admin/services/ai-gateway.js.map +1 -0
  34. package/dist/admin/services/bunny.d.ts +16 -0
  35. package/dist/admin/services/bunny.d.ts.map +1 -0
  36. package/dist/admin/services/bunny.js +59 -0
  37. package/dist/admin/services/bunny.js.map +1 -0
  38. package/dist/admin/services/cloudflare.d.ts +42 -0
  39. package/dist/admin/services/cloudflare.d.ts.map +1 -0
  40. package/dist/admin/services/cloudflare.js +97 -0
  41. package/dist/admin/services/cloudflare.js.map +1 -0
  42. package/dist/admin/services/db.d.ts +16 -0
  43. package/dist/admin/services/db.d.ts.map +1 -0
  44. package/dist/admin/services/db.js +81 -0
  45. package/dist/admin/services/db.js.map +1 -0
  46. package/dist/admin/services/elevenlabs.d.ts +22 -0
  47. package/dist/admin/services/elevenlabs.d.ts.map +1 -0
  48. package/dist/admin/services/elevenlabs.js +45 -0
  49. package/dist/admin/services/elevenlabs.js.map +1 -0
  50. package/dist/admin/services/firecrawl.d.ts +13 -0
  51. package/dist/admin/services/firecrawl.d.ts.map +1 -0
  52. package/dist/admin/services/firecrawl.js +36 -0
  53. package/dist/admin/services/firecrawl.js.map +1 -0
  54. package/dist/admin/services/fireworks.d.ts +9 -0
  55. package/dist/admin/services/fireworks.d.ts.map +1 -0
  56. package/dist/admin/services/fireworks.js +31 -0
  57. package/dist/admin/services/fireworks.js.map +1 -0
  58. package/dist/admin/services/github.d.ts +26 -0
  59. package/dist/admin/services/github.d.ts.map +1 -0
  60. package/dist/admin/services/github.js +164 -0
  61. package/dist/admin/services/github.js.map +1 -0
  62. package/dist/admin/services/neon.d.ts +42 -0
  63. package/dist/admin/services/neon.d.ts.map +1 -0
  64. package/dist/admin/services/neon.js +157 -0
  65. package/dist/admin/services/neon.js.map +1 -0
  66. package/dist/admin/services/resend.d.ts +38 -0
  67. package/dist/admin/services/resend.d.ts.map +1 -0
  68. package/dist/admin/services/resend.js +81 -0
  69. package/dist/admin/services/resend.js.map +1 -0
  70. package/dist/admin/services/togetherai.d.ts +10 -0
  71. package/dist/admin/services/togetherai.d.ts.map +1 -0
  72. package/dist/admin/services/togetherai.js +36 -0
  73. package/dist/admin/services/togetherai.js.map +1 -0
  74. package/dist/admin/services/vercel.d.ts +66 -0
  75. package/dist/admin/services/vercel.d.ts.map +1 -0
  76. package/dist/admin/services/vercel.js +209 -0
  77. package/dist/admin/services/vercel.js.map +1 -0
  78. package/dist/admin/syncenv.d.ts +12 -0
  79. package/dist/admin/syncenv.d.ts.map +1 -0
  80. package/dist/admin/syncenv.js +114 -0
  81. package/dist/admin/syncenv.js.map +1 -0
  82. package/dist/admin/users.d.ts +27 -0
  83. package/dist/admin/users.d.ts.map +1 -0
  84. package/dist/admin/users.js +48 -0
  85. package/dist/admin/users.js.map +1 -0
  86. package/dist/config/environments.d.ts +50 -0
  87. package/dist/config/environments.d.ts.map +1 -0
  88. package/dist/config/environments.js +62 -0
  89. package/dist/config/environments.js.map +1 -0
  90. package/dist/config/names.d.ts +45 -0
  91. package/dist/config/names.d.ts.map +1 -0
  92. package/dist/config/names.js +75 -0
  93. package/dist/config/names.js.map +1 -0
  94. package/dist/http/errors.d.ts +45 -0
  95. package/dist/http/errors.d.ts.map +1 -0
  96. package/dist/http/errors.js +70 -0
  97. package/dist/http/errors.js.map +1 -0
  98. package/dist/http/request.d.ts +36 -0
  99. package/dist/http/request.d.ts.map +1 -0
  100. package/dist/http/request.js +73 -0
  101. package/dist/http/request.js.map +1 -0
  102. package/dist/index.d.ts +15 -0
  103. package/dist/index.d.ts.map +1 -0
  104. package/dist/index.js +15 -0
  105. package/dist/index.js.map +1 -0
  106. package/dist/registry.d.ts +66 -0
  107. package/dist/registry.d.ts.map +1 -0
  108. package/dist/registry.js +137 -0
  109. package/dist/registry.js.map +1 -0
  110. package/dist/secrets/store.d.ts +50 -0
  111. package/dist/secrets/store.d.ts.map +1 -0
  112. package/dist/secrets/store.js +71 -0
  113. package/dist/secrets/store.js.map +1 -0
  114. package/dist/services/types.d.ts +39 -0
  115. package/dist/services/types.d.ts.map +1 -0
  116. package/dist/services/types.js +28 -0
  117. package/dist/services/types.js.map +1 -0
  118. package/package.json +40 -0
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Where secrets come from.
3
+ *
4
+ * The Core never knows which store it has. A machine identity on an operator's
5
+ * laptop, one in a deployed worker — same interface, and no service client is
6
+ * aware of the difference.
7
+ *
8
+ * A store owns its own reference format: `infisicalStore` speaks
9
+ * `infisical://project/environment/folder/KEY` and both recognises and parses
10
+ * it itself. Nothing here interprets a reference, which is what lets a second
11
+ * store exist without teaching this module its scheme — and what keeps
12
+ * `postgres://user:pw@host/db` a literal rather than a reference that happens
13
+ * to have a scheme.
14
+ */
15
+ export interface SecretStore {
16
+ /** Whether this store recognises `ref` as one of its references. */
17
+ owns(ref: string): boolean;
18
+ /** Resolve one reference to its value. Throws if it does not exist. */
19
+ get(ref: string): Promise<string>;
20
+ /**
21
+ * Every key directly under a reference naming a container rather than a
22
+ * value — for Infisical, a folder. Nothing recurses: a sync pushes one
23
+ * app's environment, and a nested folder is a different app's.
24
+ */
25
+ list(prefix: string): Promise<Record<string, string>>;
26
+ /**
27
+ * Write one value, creating whatever has to exist to hold it.
28
+ *
29
+ * Writing is idempotent because a caller cannot usefully know whether a
30
+ * reference is already there — checking first and then writing is two
31
+ * requests and a race, and the answer is the same either way.
32
+ */
33
+ set(ref: string, value: string): Promise<void>;
34
+ }
35
+ /** A store backed by a plain map. For tests, and for values already in hand. */
36
+ export declare function memoryStore(values: Record<string, string>): SecretStore;
37
+ /**
38
+ * Resolve a map of env var → reference-or-literal into env var → value.
39
+ *
40
+ * Literals pass through untouched, because a refs file legitimately mixes
41
+ * them: `RESEND_FROM` is not a secret, `RESEND_KEY` is. The store decides
42
+ * which is which.
43
+ *
44
+ * **An empty value is an error, not an empty string.** A key that exists but
45
+ * holds nothing resolves to `""` and the process starts with a broken
46
+ * credential, failing later and far from the cause. Failing here puts the
47
+ * error where it belongs.
48
+ */
49
+ export declare function resolveEnv(refs: Record<string, string>, store: SecretStore): Promise<Record<string, string>>;
50
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/secrets/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,WAAW;IAC1B,oEAAoE;IACpE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,uEAAuE;IACvE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC;;;;OAIG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAED,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,CAuBvE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAiBjC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Where secrets come from.
3
+ *
4
+ * The Core never knows which store it has. A machine identity on an operator's
5
+ * laptop, one in a deployed worker — same interface, and no service client is
6
+ * aware of the difference.
7
+ *
8
+ * A store owns its own reference format: `infisicalStore` speaks
9
+ * `infisical://project/environment/folder/KEY` and both recognises and parses
10
+ * it itself. Nothing here interprets a reference, which is what lets a second
11
+ * store exist without teaching this module its scheme — and what keeps
12
+ * `postgres://user:pw@host/db` a literal rather than a reference that happens
13
+ * to have a scheme.
14
+ */
15
+ /** A store backed by a plain map. For tests, and for values already in hand. */
16
+ export function memoryStore(values) {
17
+ return {
18
+ owns(ref) {
19
+ return Object.hasOwn(values, ref);
20
+ },
21
+ async get(ref) {
22
+ const v = values[ref];
23
+ if (v === undefined)
24
+ throw new Error(`No value for reference: ${ref}`);
25
+ return v;
26
+ },
27
+ async list(prefix) {
28
+ const out = {};
29
+ for (const [ref, value] of Object.entries(values)) {
30
+ if (!ref.startsWith(prefix))
31
+ continue;
32
+ const key = ref.slice(prefix.length);
33
+ if (key && !key.includes("/"))
34
+ out[key] = value;
35
+ }
36
+ return out;
37
+ },
38
+ async set(ref, value) {
39
+ values[ref] = value;
40
+ },
41
+ };
42
+ }
43
+ /**
44
+ * Resolve a map of env var → reference-or-literal into env var → value.
45
+ *
46
+ * Literals pass through untouched, because a refs file legitimately mixes
47
+ * them: `RESEND_FROM` is not a secret, `RESEND_KEY` is. The store decides
48
+ * which is which.
49
+ *
50
+ * **An empty value is an error, not an empty string.** A key that exists but
51
+ * holds nothing resolves to `""` and the process starts with a broken
52
+ * credential, failing later and far from the cause. Failing here puts the
53
+ * error where it belongs.
54
+ */
55
+ export async function resolveEnv(refs, store) {
56
+ const out = {};
57
+ for (const [key, value] of Object.entries(refs)) {
58
+ if (!store.owns(value)) {
59
+ out[key] = value;
60
+ continue;
61
+ }
62
+ const resolved = await store.get(value);
63
+ if (resolved === "") {
64
+ throw new Error(`${key} resolved to an empty value from ${value} — the reference exists ` +
65
+ `but holds nothing. Remove it until the key has a value.`);
66
+ }
67
+ out[key] = resolved;
68
+ }
69
+ return out;
70
+ }
71
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/secrets/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAuBH,gFAAgF;AAChF,MAAM,UAAU,WAAW,CAAC,MAA8B;IACxD,OAAO;QACL,IAAI,CAAC,GAAW;YACd,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,GAAW;YACnB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;YACvE,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,MAAc;YACvB,MAAM,GAAG,GAA2B,EAAE,CAAC;YACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;oBAAE,SAAS;gBACtC,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACrC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAClD,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAa;YAClC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAA4B,EAC5B,KAAkB;IAElB,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACjB,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,GAAG,GAAG,oCAAoC,KAAK,0BAA0B;gBACvE,yDAAyD,CAC5D,CAAC;QACJ,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * What every service client reports about itself.
3
+ *
4
+ * Isomorphic — an app may want a health line as much as an operator does.
5
+ */
6
+ /** One line a person can read: counts, identity, quota. */
7
+ export interface ServiceStatus {
8
+ service: string;
9
+ ok: boolean;
10
+ detail: string;
11
+ error?: string;
12
+ }
13
+ /**
14
+ * What a key enables, and how much of that was actually established.
15
+ *
16
+ * - `scopes` the provider declared the key's rights
17
+ * - `identity` it named the key, and said nothing about rights
18
+ * - `reachability` it authenticated. Nothing else was learnt
19
+ *
20
+ * The tier is the honest part: rendering the third like the first implies an
21
+ * assurance nobody obtained.
22
+ */
23
+ export type AccessEvidence = "scopes" | "identity" | "reachability";
24
+ export interface ServiceAccess {
25
+ service: string;
26
+ ok: boolean;
27
+ evidence: AccessEvidence;
28
+ scopes?: string[];
29
+ /** What the key lets the factory do, in operator terms. */
30
+ can: string[];
31
+ /** Powers worth seeing, and every place we could not tell. */
32
+ notes: string[];
33
+ error?: string;
34
+ }
35
+ /** Run a probe and turn a throw into a readable failure. */
36
+ export declare function probe(service: string, fn: () => Promise<string>): Promise<ServiceStatus>;
37
+ /** Same, for access reports. */
38
+ export declare function probeAccess(service: string, fn: () => Promise<Omit<ServiceAccess, "service" | "ok">>): Promise<ServiceAccess>;
39
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/services/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,2DAA2D;IAC3D,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,8DAA8D;IAC9D,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,4DAA4D;AAC5D,wBAAsB,KAAK,CACzB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GACxB,OAAO,CAAC,aAAa,CAAC,CAOxB;AAED,gCAAgC;AAChC,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,IAAI,CAAC,CAAC,GACvD,OAAO,CAAC,aAAa,CAAC,CASxB"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * What every service client reports about itself.
3
+ *
4
+ * Isomorphic — an app may want a health line as much as an operator does.
5
+ */
6
+ /** Run a probe and turn a throw into a readable failure. */
7
+ export async function probe(service, fn) {
8
+ try {
9
+ return { service, ok: true, detail: await fn() };
10
+ }
11
+ catch (err) {
12
+ const message = err instanceof Error ? err.message : String(err);
13
+ return { service, ok: false, detail: "unreachable", error: message.slice(0, 200) };
14
+ }
15
+ }
16
+ /** Same, for access reports. */
17
+ export async function probeAccess(service, fn) {
18
+ try {
19
+ return { service, ok: true, ...(await fn()) };
20
+ }
21
+ catch (err) {
22
+ return {
23
+ service, ok: false, evidence: "reachability", can: [], notes: [],
24
+ error: err instanceof Error ? err.message.slice(0, 200) : String(err),
25
+ };
26
+ }
27
+ }
28
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/services/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkCH,4DAA4D;AAC5D,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,OAAe,EACf,EAAyB;IAEzB,IAAI,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACnD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IACrF,CAAC;AACH,CAAC;AAED,gCAAgC;AAChC,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAe,EACf,EAAwD;IAExD,IAAI,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;YAChE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACtE,CAAC;IACJ,CAAC;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "@heychunky/core",
3
+ "version": "0.1.0",
4
+ "description": "The engine the Chunky CLI, worker and apps run on.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "default": "./dist/index.js"
11
+ },
12
+ "./admin": {
13
+ "types": "./dist/admin/index.d.ts",
14
+ "default": "./dist/admin/index.js"
15
+ }
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "scripts": {
21
+ "build": "rm -rf dist && tsc -p tsconfig.build.json",
22
+ "test": "node --test 'test/**/*.test.ts'",
23
+ "typecheck": "tsc --noEmit",
24
+ "prepublishOnly": "npm run build && npm test"
25
+ },
26
+ "devDependencies": {
27
+ "@types/node": "^24",
28
+ "typescript": "^5"
29
+ },
30
+ "engines": {
31
+ "node": ">=22"
32
+ },
33
+ "repository": {
34
+ "type": "git",
35
+ "url": "git+https://github.com/heychunkydev/heychunky-core.git"
36
+ },
37
+ "publishConfig": {
38
+ "access": "public"
39
+ }
40
+ }