@happyvertical/smrt-cli 0.55.9 → 0.55.11

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 (67) hide show
  1. package/AGENTS.md +11 -19
  2. package/README.md +4 -0
  3. package/agents/cookbook-apply.md +65 -0
  4. package/agents/kitchen.md +111 -0
  5. package/agents/process-fixture-isolation.md +29 -0
  6. package/cookbooks/bakery.cookbook.json +187 -0
  7. package/cookbooks/mechanic.cookbook.json +191 -0
  8. package/cookbooks/welder.cookbook.json +177 -0
  9. package/cookbooks/yoga-studio.cookbook.json +173 -0
  10. package/dist/{AuditLogCollection-WDHL-_AF-HQQINXuT.js → AuditLogCollection-WDHL-_AF-ClQNu_VR.js} +1 -1
  11. package/dist/{OidcIdentity-BUblgQLs-B3dRU6nj.js → OidcIdentity-BUblgQLs-br8RyLkA.js} +2 -2
  12. package/dist/{OidcIdentityCollection-ClOyaHeF-C7-jxx9o.js → OidcIdentityCollection-ClOyaHeF-BpQXB3mz.js} +1 -1
  13. package/dist/{ProfileAssetCollection-CRMcjLJ--CQ4QjtjK.js → ProfileAssetCollection-CRMcjLJ--C5ytBKfF.js} +3 -3
  14. package/dist/{ProfileCollection-C4INKh7Y-C22q_JqL.js → ProfileCollection-C4INKh7Y-CfkyJilm.js} +17 -17
  15. package/dist/{ProfileLinkCollection-DFfZRsgv-BsRRI9lh.js → ProfileLinkCollection-DFfZRsgv-MQ2zhD9z.js} +2 -2
  16. package/dist/{ProfileMetadataCollection-BIYKy4Y3-C6hpFkOa.js → ProfileMetadataCollection-BIYKy4Y3-DXu5L2yx.js} +1 -1
  17. package/dist/{ProfileMetafieldCollection-Buz7gzag-BLXQjqBG.js → ProfileMetafieldCollection-Buz7gzag-C2tZc1PF.js} +1 -1
  18. package/dist/{ProfileRelationshipCollection-C4g_QLI4-DNywujKX.js → ProfileRelationshipCollection-C4g_QLI4-vTnkAIAh.js} +1 -1
  19. package/dist/{ProfileTypeCollection-B7kwi1mU-DPXH67Rh.js → ProfileTypeCollection-B7kwi1mU-KwPGcUkI.js} +2 -2
  20. package/dist/apply-BNDIdixP.js +947 -0
  21. package/dist/cli-generator.d.ts.map +1 -1
  22. package/dist/commands/cookbook/apply.d.ts +102 -0
  23. package/dist/commands/cookbook/apply.d.ts.map +1 -0
  24. package/dist/commands/cookbook/recipe-index.d.ts +108 -0
  25. package/dist/commands/cookbook/recipe-index.d.ts.map +1 -0
  26. package/dist/commands/cookbook/registry.d.ts +69 -0
  27. package/dist/commands/cookbook/registry.d.ts.map +1 -0
  28. package/dist/commands/cookbook/shared.d.ts +23 -0
  29. package/dist/commands/cookbook/shared.d.ts.map +1 -0
  30. package/dist/commands/cookbook/validate.d.ts +25 -0
  31. package/dist/commands/cookbook/validate.d.ts.map +1 -0
  32. package/dist/commands/cookbook.d.ts +6 -0
  33. package/dist/commands/cookbook.d.ts.map +1 -0
  34. package/dist/commands/index.d.ts +2 -0
  35. package/dist/commands/index.d.ts.map +1 -1
  36. package/dist/commands/kitchen/ai.d.ts +34 -0
  37. package/dist/commands/kitchen/ai.d.ts.map +1 -0
  38. package/dist/commands/kitchen/apply.d.ts +52 -0
  39. package/dist/commands/kitchen/apply.d.ts.map +1 -0
  40. package/dist/commands/kitchen/mcp/catalog.d.ts +39 -0
  41. package/dist/commands/kitchen/mcp/catalog.d.ts.map +1 -0
  42. package/dist/commands/kitchen/mcp/server.d.ts +15 -0
  43. package/dist/commands/kitchen/mcp/server.d.ts.map +1 -0
  44. package/dist/commands/kitchen/mcp/tools.d.ts +68 -0
  45. package/dist/commands/kitchen/mcp/tools.d.ts.map +1 -0
  46. package/dist/commands/kitchen/planner.d.ts +71 -0
  47. package/dist/commands/kitchen/planner.d.ts.map +1 -0
  48. package/dist/commands/kitchen/run.d.ts +40 -0
  49. package/dist/commands/kitchen/run.d.ts.map +1 -0
  50. package/dist/commands/kitchen/server.d.ts +39 -0
  51. package/dist/commands/kitchen/server.d.ts.map +1 -0
  52. package/dist/commands/kitchen.d.ts +7 -0
  53. package/dist/commands/kitchen.d.ts.map +1 -0
  54. package/dist/{commands-NBDTnB3h.js → commands-pbRVQvix.js} +759 -9
  55. package/dist/dist-BsRSQ_hE.js +4117 -0
  56. package/dist/{dist-DuVZ0o9F.js → dist-CYVIKmvy.js} +4 -4
  57. package/dist/dist-D_WqjwkC.js +21 -0
  58. package/dist/{dist-FZLsgj__.js → dist-DxkSjKQQ.js} +2 -2
  59. package/dist/dist-ffh0LeC4.js +1788 -0
  60. package/dist/index.js +44 -16
  61. package/dist/{oidcProvisioningPrimitives-DNP9EZlU-CbUV0zfC.js → oidcProvisioningPrimitives-DNP9EZlU-CBYwksp0.js} +3 -3
  62. package/dist/{resolveIdentity-CkyqvctR-qw-nqxJ3.js → resolveIdentity-CkyqvctR-B5btFsQd.js} +14 -14
  63. package/dist/server-Dp096tZj.js +898 -0
  64. package/package.json +13 -10
  65. package/dist/dist-B-kbXFDM.js +0 -4113
  66. package/dist/dist-BKuPI8_N.js +0 -1788
  67. package/dist/dist-DqmJkgkG.js +0 -21
package/dist/index.js CHANGED
@@ -47,65 +47,81 @@ var _dispatchCommands = null;
47
47
  var _docsCommands = null;
48
48
  var _playgroundCommands = null;
49
49
  var _workbenchCommands = null;
50
+ var _cookbookCommands = null;
51
+ var _kitchenCommands = null;
50
52
  async function getGnodeCommands() {
51
53
  if (!_gnodeCommands) {
52
- const { gnodeCommands } = await import("./commands-NBDTnB3h.js");
54
+ const { gnodeCommands } = await import("./commands-pbRVQvix.js");
53
55
  _gnodeCommands = gnodeCommands;
54
56
  }
55
57
  return _gnodeCommands;
56
58
  }
57
59
  async function getGitCommands() {
58
60
  if (!_gitCommands) {
59
- const { gitCommands } = await import("./commands-NBDTnB3h.js");
61
+ const { gitCommands } = await import("./commands-pbRVQvix.js");
60
62
  _gitCommands = gitCommands;
61
63
  }
62
64
  return _gitCommands;
63
65
  }
64
66
  async function getGenerateCommands() {
65
67
  if (!_generateCommands) {
66
- const { generateCommands } = await import("./commands-NBDTnB3h.js");
68
+ const { generateCommands } = await import("./commands-pbRVQvix.js");
67
69
  _generateCommands = generateCommands;
68
70
  }
69
71
  return _generateCommands;
70
72
  }
71
73
  async function getInitCommands() {
72
74
  if (!_initCommands) {
73
- const { initCommands } = await import("./commands-NBDTnB3h.js");
75
+ const { initCommands } = await import("./commands-pbRVQvix.js");
74
76
  _initCommands = initCommands;
75
77
  }
76
78
  return _initCommands;
77
79
  }
78
80
  async function getUtilityCommands() {
79
81
  if (!_utilityCommands) {
80
- const { utilityCommands } = await import("./commands-NBDTnB3h.js");
82
+ const { utilityCommands } = await import("./commands-pbRVQvix.js");
81
83
  _utilityCommands = utilityCommands;
82
84
  }
83
85
  return _utilityCommands;
84
86
  }
85
87
  async function getDispatchCommands() {
86
88
  if (!_dispatchCommands) {
87
- const { dispatchCommands } = await import("./commands-NBDTnB3h.js");
89
+ const { dispatchCommands } = await import("./commands-pbRVQvix.js");
88
90
  _dispatchCommands = dispatchCommands;
89
91
  }
90
92
  return _dispatchCommands;
91
93
  }
92
94
  async function getDocsCommands() {
93
95
  if (!_docsCommands) {
94
- const { docsCommands } = await import("./commands-NBDTnB3h.js");
96
+ const { docsCommands } = await import("./commands-pbRVQvix.js");
95
97
  _docsCommands = docsCommands;
96
98
  }
97
99
  return _docsCommands;
98
100
  }
99
101
  async function getPlaygroundCommands() {
100
102
  if (!_playgroundCommands) {
101
- const { playgroundCommands } = await import("./commands-NBDTnB3h.js");
103
+ const { playgroundCommands } = await import("./commands-pbRVQvix.js");
102
104
  _playgroundCommands = playgroundCommands;
103
105
  }
104
106
  return _playgroundCommands;
105
107
  }
108
+ async function getCookbookCommands() {
109
+ if (!_cookbookCommands) {
110
+ const { cookbookCommands } = await import("./commands-pbRVQvix.js");
111
+ _cookbookCommands = cookbookCommands;
112
+ }
113
+ return _cookbookCommands;
114
+ }
115
+ async function getKitchenCommands() {
116
+ if (!_kitchenCommands) {
117
+ const { kitchenCommands } = await import("./commands-pbRVQvix.js");
118
+ _kitchenCommands = kitchenCommands;
119
+ }
120
+ return _kitchenCommands;
121
+ }
106
122
  async function getWorkbenchCommands() {
107
123
  if (!_workbenchCommands) {
108
- const { workbenchCommands } = await import("./commands-NBDTnB3h.js");
124
+ const { workbenchCommands } = await import("./commands-pbRVQvix.js");
109
125
  _workbenchCommands = workbenchCommands;
110
126
  }
111
127
  return _workbenchCommands;
@@ -390,8 +406,8 @@ var CLIGenerator = class {
390
406
  loadLocalTestManifestSync();
391
407
  const registerPath = path.join(process.cwd(), ".smrt", "register.js");
392
408
  if (!fs.existsSync(registerPath)) {
393
- console.log("[CLI] No .smrt/register.js found - custom commands may not work");
394
- console.log(" Run \"npm run build\" to generate class registrations");
409
+ console.warn("[CLI] No .smrt/register.js found - custom commands may not work");
410
+ console.warn(" Run \"npm run build\" to generate class registrations");
395
411
  return;
396
412
  }
397
413
  try {
@@ -805,7 +821,7 @@ var CLIGenerator = class {
805
821
  return;
806
822
  }
807
823
  }
808
- const [gnodeCommands, generateCommands, gitCommands, initCommands, utilityCommands, dispatchCommands, docsCommands, playgroundCommands, workbenchCommands] = await Promise.all([
824
+ const [gnodeCommands, generateCommands, gitCommands, initCommands, utilityCommands, dispatchCommands, docsCommands, playgroundCommands, workbenchCommands, cookbookCommands, kitchenCommands] = await Promise.all([
809
825
  getGnodeCommands(),
810
826
  getGenerateCommands(),
811
827
  getGitCommands(),
@@ -814,7 +830,9 @@ var CLIGenerator = class {
814
830
  getDispatchCommands(),
815
831
  getDocsCommands(),
816
832
  getPlaygroundCommands(),
817
- getWorkbenchCommands()
833
+ getWorkbenchCommands(),
834
+ getCookbookCommands(),
835
+ getKitchenCommands()
818
836
  ]);
819
837
  const builtInCommands = {
820
838
  ...gnodeCommands,
@@ -825,7 +843,9 @@ var CLIGenerator = class {
825
843
  ...dispatchCommands,
826
844
  ...docsCommands,
827
845
  ...playgroundCommands,
828
- ...workbenchCommands
846
+ ...workbenchCommands,
847
+ ...cookbookCommands,
848
+ ...kitchenCommands
829
849
  };
830
850
  const builtInMatch = matchLeadingCommand(processedArgv, [], builtInCommands);
831
851
  const builtInCommand = builtInMatch.command ?? builtInCommands[parsed.command] ?? Object.values(builtInCommands).find((cmd) => cmd.name === parsed.command || cmd.aliases?.includes(parsed.command ?? ""));
@@ -1051,7 +1071,7 @@ var CLIGenerator = class {
1051
1071
  console.log(`${this.config.name} v${this.config.version}`);
1052
1072
  console.log(this.config.description);
1053
1073
  console.log();
1054
- const [gnodeCommands, generateCommands, gitCommands, initCommands, utilityCommands, dispatchCommands, docsCommands, playgroundCommands, workbenchCommands] = await Promise.all([
1074
+ const [gnodeCommands, generateCommands, gitCommands, initCommands, utilityCommands, dispatchCommands, docsCommands, playgroundCommands, workbenchCommands, cookbookCommands, kitchenCommands] = await Promise.all([
1055
1075
  getGnodeCommands(),
1056
1076
  getGenerateCommands(),
1057
1077
  getGitCommands(),
@@ -1060,7 +1080,9 @@ var CLIGenerator = class {
1060
1080
  getDispatchCommands(),
1061
1081
  getDocsCommands(),
1062
1082
  getPlaygroundCommands(),
1063
- getWorkbenchCommands()
1083
+ getWorkbenchCommands(),
1084
+ getCookbookCommands(),
1085
+ getKitchenCommands()
1064
1086
  ]);
1065
1087
  console.log("Project Setup:");
1066
1088
  for (const command of Object.values(initCommands)) this.showCommandHelp(command);
@@ -1068,6 +1090,12 @@ var CLIGenerator = class {
1068
1090
  console.log("Playground:");
1069
1091
  for (const command of Object.values(playgroundCommands)) this.showCommandHelp(command);
1070
1092
  console.log();
1093
+ console.log("Cookbook:");
1094
+ for (const command of Object.values(cookbookCommands)) this.showCommandHelp(command);
1095
+ console.log();
1096
+ console.log("Kitchen:");
1097
+ for (const command of Object.values(kitchenCommands)) this.showCommandHelp(command);
1098
+ console.log();
1071
1099
  console.log("Workbench:");
1072
1100
  for (const command of Object.values(workbenchCommands)) this.showCommandHelp(command);
1073
1101
  console.log();
@@ -1,8 +1,8 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
2
2
  import { n as __exportAll$1 } from "./NostrIdentity-AC8fAdxe-DKxKyu_a.js";
3
- import { t as OidcIdentity } from "./OidcIdentity-BUblgQLs-B3dRU6nj.js";
4
- import { a as ProfileCollection, f as saveOidcRaceArbiter, i as Profile } from "./ProfileCollection-C4INKh7Y-C22q_JqL.js";
5
- import { t as ProfileTypeCollection } from "./ProfileTypeCollection-B7kwi1mU-DPXH67Rh.js";
3
+ import { t as OidcIdentity } from "./OidcIdentity-BUblgQLs-br8RyLkA.js";
4
+ import { a as ProfileCollection, f as saveOidcRaceArbiter, i as Profile } from "./ProfileCollection-C4INKh7Y-CfkyJilm.js";
5
+ import { t as ProfileTypeCollection } from "./ProfileTypeCollection-B7kwi1mU-KwPGcUkI.js";
6
6
  import { smrt } from "@happyvertical/smrt-core";
7
7
  //#region ../profiles/dist/chunks/oidcProvisioningPrimitives-DNP9EZlU.js
8
8
  var oidcProvisioningPrimitives_DNP9EZlU_exports = /* @__PURE__ */ __exportAll({
@@ -1,10 +1,10 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
2
- import { u as withSystemContext } from "./dist-FZLsgj__.js";
2
+ import { u as withSystemContext } from "./dist-DxkSjKQQ.js";
3
3
  import { n as __exportAll$1, t as NostrIdentity, u as verifyAuthEvent } from "./NostrIdentity-AC8fAdxe-DKxKyu_a.js";
4
4
  import { t as ApiKey } from "./ApiKey-CVmlf3V6-BAeHuH48.js";
5
- import { t as OidcIdentity } from "./OidcIdentity-BUblgQLs-B3dRU6nj.js";
6
- import { c as coordinateOidcProvisioning, l as isOidcProvisioningRaceConflict, u as normalizeIdentityEmail } from "./ProfileCollection-C4INKh7Y-C22q_JqL.js";
7
- import { a as insertOidcProvisioningIdentity, i as createOidcProvisioningPerson } from "./oidcProvisioningPrimitives-DNP9EZlU-CbUV0zfC.js";
5
+ import { t as OidcIdentity } from "./OidcIdentity-BUblgQLs-br8RyLkA.js";
6
+ import { c as coordinateOidcProvisioning, l as isOidcProvisioningRaceConflict, u as normalizeIdentityEmail } from "./ProfileCollection-C4INKh7Y-CfkyJilm.js";
7
+ import { a as insertOidcProvisioningIdentity, i as createOidcProvisioningPerson } from "./oidcProvisioningPrimitives-DNP9EZlU-CBYwksp0.js";
8
8
  import { resolveDatabase } from "@happyvertical/smrt-core";
9
9
  //#region ../profiles/dist/chunks/resolveIdentity-CkyqvctR.js
10
10
  var resolveIdentity_CkyqvctR_exports = /* @__PURE__ */ __exportAll({
@@ -72,13 +72,13 @@ async function resolveIdentity(context) {
72
72
  };
73
73
  }
74
74
  async function findProfileByExternalId(provider, externalId, options) {
75
- const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-C7-jxx9o.js").then((n) => n.r).then((n) => n.r);
75
+ const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-BpQXB3mz.js").then((n) => n.r).then((n) => n.r);
76
76
  const identities = await (await OidcIdentityCollection.create(options)).findByProvider(provider);
77
77
  for (const identity of identities) if (identity.subject === externalId || identity.email?.includes(externalId)) {
78
78
  const profile = await identity.getProfile();
79
79
  if (profile) return profile;
80
80
  }
81
- const { ProfileCollection } = await import("./ProfileCollection-C4INKh7Y-C22q_JqL.js").then((n) => n.o).then((n) => n.r);
81
+ const { ProfileCollection } = await import("./ProfileCollection-C4INKh7Y-CfkyJilm.js").then((n) => n.o).then((n) => n.r);
82
82
  const profiles = await (await ProfileCollection.create(options)).list({
83
83
  where: { email: `${externalId}@users.noreply.github.com` },
84
84
  limit: 1
@@ -99,7 +99,7 @@ async function reuseExistingOidcIdentityForProfile(profileId, claims, provider,
99
99
  createConcurrencyError: (cause) => new Error("Concurrent exact OIDC identity reuse did not converge.", cause === void 0 ? void 0 : { cause }),
100
100
  rebindRootResult: rebindOidcProfileResult,
101
101
  provision: (tx) => withSystemContext(async () => {
102
- const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-C7-jxx9o.js").then((n) => n.r).then((n) => n.r);
102
+ const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-BpQXB3mz.js").then((n) => n.r).then((n) => n.r);
103
103
  const identity = await (await OidcIdentityCollection.create({ db: tx })).findBySubject(normalizedClaims.iss, normalizedClaims.sub);
104
104
  if (!identity) throw new Error("OidcIdentity.findOrCreate() no longer creates authentication links; use UserCollection.getOrCreateFromOidc() or createProfileFromOidc().");
105
105
  if (identity.profileId !== profileId) throw new Error(`OIDC identity ${normalizedClaims.iss} subject ${normalizedClaims.sub} belongs to a different Profile.`);
@@ -133,7 +133,7 @@ async function coordinateProfileOidcProvisioning(claims, provider, options) {
133
133
  });
134
134
  }
135
135
  async function provisionOidcProfile(claims, provider, options) {
136
- const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-C7-jxx9o.js").then((n) => n.r).then((n) => n.r);
136
+ const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-BpQXB3mz.js").then((n) => n.r).then((n) => n.r);
137
137
  const existingIdentity = await (await OidcIdentityCollection.create(options)).findBySubject(claims.iss, claims.sub);
138
138
  if (existingIdentity) {
139
139
  const profile2 = await existingIdentity.getProfile();
@@ -148,7 +148,7 @@ async function provisionOidcProfile(claims, provider, options) {
148
148
  created: false
149
149
  };
150
150
  }
151
- const { ProfileCollection } = await import("./ProfileCollection-C4INKh7Y-C22q_JqL.js").then((n) => n.o).then((n) => n.r);
151
+ const { ProfileCollection } = await import("./ProfileCollection-C4INKh7Y-CfkyJilm.js").then((n) => n.o).then((n) => n.r);
152
152
  const profileCollection = await ProfileCollection.create(options);
153
153
  if (claims.email) {
154
154
  if (await profileCollection.findUniqueGlobalPersonByEmail(claims.email)) {
@@ -175,8 +175,8 @@ async function provisionOidcProfile(claims, provider, options) {
175
175
  };
176
176
  }
177
177
  async function rebindOidcProfileResult(result, rootDb) {
178
- const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-C7-jxx9o.js").then((n) => n.r).then((n) => n.r);
179
- const { ProfileCollection } = await import("./ProfileCollection-C4INKh7Y-C22q_JqL.js").then((n) => n.o).then((n) => n.r);
178
+ const { OidcIdentityCollection } = await import("./OidcIdentityCollection-ClOyaHeF-BpQXB3mz.js").then((n) => n.r).then((n) => n.r);
179
+ const { ProfileCollection } = await import("./ProfileCollection-C4INKh7Y-CfkyJilm.js").then((n) => n.o).then((n) => n.r);
180
180
  const profileId = requireOidcProfileId(result.profile.id);
181
181
  const identityId = requireOidcProfileId(result.oidcIdentity.id);
182
182
  const [profile, oidcIdentity] = await withSystemContext(async () => {
@@ -225,11 +225,11 @@ async function createProfileFromNostr(email, nostrData, options) {
225
225
  created: false
226
226
  };
227
227
  }
228
- const { Person } = await import("./oidcProvisioningPrimitives-DNP9EZlU-CbUV0zfC.js").then((n) => n.o).then((n) => n.o);
229
- const { ProfileTypeCollection } = await import("./ProfileTypeCollection-B7kwi1mU-DPXH67Rh.js").then((n) => n.n).then((n) => n.n);
228
+ const { Person } = await import("./oidcProvisioningPrimitives-DNP9EZlU-CBYwksp0.js").then((n) => n.o).then((n) => n.o);
229
+ const { ProfileTypeCollection } = await import("./ProfileTypeCollection-B7kwi1mU-KwPGcUkI.js").then((n) => n.n).then((n) => n.n);
230
230
  let personType = await (await ProfileTypeCollection.create(options)).getBySlug("person");
231
231
  if (!personType) {
232
- const { ProfileType } = await import("./ProfileCollection-C4INKh7Y-C22q_JqL.js").then((n) => n.o).then((n) => n.h);
232
+ const { ProfileType } = await import("./ProfileCollection-C4INKh7Y-CfkyJilm.js").then((n) => n.o).then((n) => n.h);
233
233
  personType = new ProfileType({
234
234
  ...options,
235
235
  slug: "person",