@soulcraft/sdk 3.4.0 → 3.5.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.
@@ -123,6 +123,17 @@ export interface SoulcraftAuthOptions {
123
123
  * Default: `'/api/auth/backchannel-logout'`.
124
124
  */
125
125
  backchannelPath?: string;
126
+ /**
127
+ * Default role for auto-login in dev mode. When set and no `SOULCRAFT_IDP_URL`
128
+ * is configured, the auth handle automatically creates a dev session on the
129
+ * first request if no dev cookie is present. The developer is logged in the
130
+ * moment the page loads — no manual `/api/dev/login` call needed.
131
+ *
132
+ * Set to `false` to disable auto-login (require explicit `/api/dev/login`).
133
+ *
134
+ * @default 'owner'
135
+ */
136
+ defaultDevRole?: SoulcraftSessionUser['platformRole'] | false;
126
137
  }
127
138
  /**
128
139
  * @description The return value of `createSoulcraftAuth()`.
@@ -1 +1 @@
1
- {"version":3,"file":"sveltekit.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/sveltekit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAoB,MAAM,YAAY,CAAA;AAMxE;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,GAAG,CAAA;IACR,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,OAAO,EAAE;QACP,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAA;KACrD,CAAA;CACF;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE;IACpC,KAAK,EAAE,cAAc,CAAA;IACrB,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;CACtD,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEvB;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAMlF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAA;IAE1B;;;;;;;;;;;;;;;;;;OAkBG;IACH,UAAU,CAAC,EAAE,CACX,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,cAAc,KAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAE/D;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;;OAQG;IACH,MAAM,EAAE,eAAe,CAAA;IAEvB;;;;;;;;;;;;OAYG;IACH,kBAAkB,EAAE,uBAAuB,CAAA;IAE3C;;;;;;;;;;;OAWG;IACH,aAAa,EAAE,uBAAuB,CAAA;IAEtC;;;;;;;;;;;OAWG;IACH,eAAe,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,QAAQ,CAAA;IAEpD;;;OAGG;IACH,aAAa,EAAE,eAAe,CAAA;CAC/B;AAuFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAuJhF;AAMD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAE5B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAiBnE"}
1
+ {"version":3,"file":"sveltekit.d.ts","sourceRoot":"","sources":["../../../src/modules/auth/sveltekit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAoB,MAAM,YAAY,CAAA;AAOxE;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,GAAG,CAAA;IACR,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,OAAO,EAAE;QACP,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAA;KACrD,CAAA;CACF;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE;IACpC,KAAK,EAAE,cAAc,CAAA;IACrB,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;CACtD,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEvB;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAMlF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAA;IAE1B;;;;;;;;;;;;;;;;;;OAkBG;IACH,UAAU,CAAC,EAAE,CACX,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,cAAc,KAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAE/D;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,oBAAoB,CAAC,cAAc,CAAC,GAAG,KAAK,CAAA;CAC9D;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;;OAQG;IACH,MAAM,EAAE,eAAe,CAAA;IAEvB;;;;;;;;;;;;OAYG;IACH,kBAAkB,EAAE,uBAAuB,CAAA;IAE3C;;;;;;;;;;;OAWG;IACH,aAAa,EAAE,uBAAuB,CAAA;IAEtC;;;;;;;;;;;OAWG;IACH,eAAe,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,QAAQ,CAAA;IAEpD;;;OAGG;IACH,aAAa,EAAE,eAAe,CAAA;CAC/B;AAuFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAgNhF;AAMD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAE5B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAiBnE"}
@@ -48,6 +48,7 @@
48
48
  * ```
49
49
  */
50
50
  import { createRemoteSessionVerifier, createDevCookieVerifier, createRequestDevLoginHandler } from './request-middleware.js';
51
+ import { computeEmailHash } from './config.js';
51
52
  // ─────────────────────────────────────────────────────────────────────────────
52
53
  // Constants
53
54
  // ─────────────────────────────────────────────────────────────────────────────
@@ -142,13 +143,24 @@ async function verifyHS256JWT(token, secret) {
142
143
  * ```
143
144
  */
144
145
  export function createSoulcraftAuth(options) {
145
- const { product, enrichUser, devCookieName = 'soulcraft_dev_session', backchannelPath = '/api/auth/backchannel-logout', } = options;
146
+ const { product, enrichUser, devCookieName = 'soulcraft_dev_session', backchannelPath = '/api/auth/backchannel-logout', defaultDevRole = 'owner', } = options;
146
147
  // ── Session verifier selection ──────────────────────────────────────────
147
148
  const idpUrl = process.env['SOULCRAFT_IDP_URL'];
149
+ const isDevMode = !idpUrl;
148
150
  const verifySession = options.verifier
149
151
  ?? (idpUrl
150
152
  ? createRemoteSessionVerifier({ idpUrl })
151
153
  : createDevCookieVerifier(devCookieName));
154
+ // ── Dev mode startup banner ─────────────────────────────────────────────
155
+ if (isDevMode && defaultDevRole !== false) {
156
+ const roles = ['owner', 'staff', 'manager', 'creator', 'customer'];
157
+ console.log(`\n ⚡ DEV MODE — ${product} (auto-login: ${defaultDevRole})`);
158
+ console.log(` Switch roles:`);
159
+ for (const role of roles) {
160
+ console.log(` ▸ ${role.padEnd(10)} /api/dev/login?role=${role}`);
161
+ }
162
+ console.log();
163
+ }
152
164
  // ── Handle hook ─────────────────────────────────────────────────────────
153
165
  const handle = async ({ event, resolve }) => {
154
166
  // CSRF bypass for backchannel-logout — the IdP sends server-to-server
@@ -162,7 +174,7 @@ export function createSoulcraftAuth(options) {
162
174
  }
163
175
  // Resolve session
164
176
  const cookieHeader = event.request.headers.get('cookie') ?? '';
165
- const session = await verifySession(cookieHeader);
177
+ let session = await verifySession(cookieHeader);
166
178
  // Stale cookie recovery — if cookie present but session null, clear it
167
179
  const hasSessionCookie = cookieHeader.includes(SESSION_COOKIE);
168
180
  if (hasSessionCookie && !session) {
@@ -170,6 +182,45 @@ export function createSoulcraftAuth(options) {
170
182
  response.headers.append('Set-Cookie', CLEAR_SESSION_COOKIE);
171
183
  return response;
172
184
  }
185
+ // ── Dev auto-login ──────────────────────────────────────────────────
186
+ // In dev mode, if no session exists and auto-login is enabled, create
187
+ // a dev session automatically. The developer is logged in the moment
188
+ // the first page loads — no manual /api/dev/login call needed.
189
+ if (isDevMode && !session && defaultDevRole !== false) {
190
+ const role = defaultDevRole;
191
+ const email = `dev-${role}@soulcraft.com`;
192
+ const autoSession = {
193
+ user: {
194
+ id: `dev-user-${role}`,
195
+ email,
196
+ name: `Dev ${role.charAt(0).toUpperCase() + role.slice(1)}`,
197
+ image: null,
198
+ platformRole: role,
199
+ emailHash: computeEmailHash(email),
200
+ },
201
+ sessionId: `dev-session-auto-${Date.now()}`,
202
+ expiresAt: Date.now() + 86_400_000,
203
+ };
204
+ session = autoSession;
205
+ // Set the cookie so subsequent requests don't re-create the session
206
+ const cookieValue = Buffer.from(JSON.stringify(autoSession)).toString('base64url');
207
+ const setCookie = [
208
+ `${devCookieName}=${cookieValue}`,
209
+ `Path=/`,
210
+ `HttpOnly`,
211
+ `SameSite=Lax`,
212
+ `Max-Age=86400`,
213
+ ].join('; ');
214
+ // Attach session, resolve, then append the cookie to the response
215
+ event.locals['session'] = { sessionId: autoSession.sessionId, expiresAt: autoSession.expiresAt };
216
+ const user = enrichUser
217
+ ? await enrichUser(autoSession.user, event)
218
+ : autoSession.user;
219
+ event.locals['user'] = user;
220
+ const response = await resolve(event);
221
+ response.headers.append('Set-Cookie', setCookie);
222
+ return response;
223
+ }
173
224
  // Attach session and user to locals
174
225
  event.locals['session'] = session
175
226
  ? { sessionId: session.sessionId, expiresAt: session.expiresAt }
@@ -1 +1 @@
1
- {"version":3,"file":"sveltekit.js","sourceRoot":"","sources":["../../../src/modules/auth/sveltekit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAA;AAiK5H,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,cAAc,GAAG,oCAAoC,CAAA;AAE3D;;;GAGG;AACH,MAAM,oBAAoB,GACxB,GAAG,cAAc,6EAA6E,CAAA;AAEhG,qDAAqD;AACrD,MAAM,wBAAwB,GAAG,oDAAoD,CAAA;AAErF,gFAAgF;AAChF,uDAAuD;AACvD,gFAAgF;AAEhF;;;;;;GAMG;AACH,KAAK,UAAU,cAAc,CAC3B,KAAa,EACb,MAAc;IAEd,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEnC,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,KAAiC,CAAA;IAEzE,IAAI,GAAc,CAAA;IAClB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CACjC,KAAK,EACL,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAChC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EACjC,KAAK,EACL,CAAC,QAAQ,CAAC,CACX,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,YAAY,GAAG,GAAG,SAAS,IAAI,UAAU,EAAE,CAAA;IACjD,IAAI,QAAoB,CAAA;IACxB,IAAI,CAAC;QACH,QAAQ,GAAG,UAAU,CAAC,IAAI,CACxB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAClD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CACvB,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CACtC,MAAM,EACN,GAAG,EACH,QAAQ,CAAC,MAAqB,EAC9B,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CACvC,CAAA;IACD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IAEvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;YAC7D,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAA4B,CAAA;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA6B;IAC/D,MAAM,EACJ,OAAO,EACP,UAAU,EACV,aAAa,GAAG,uBAAuB,EACvC,eAAe,GAAG,8BAA8B,GACjD,GAAG,OAAO,CAAA;IAEX,2EAA2E;IAC3E,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IAC/C,MAAM,aAAa,GAAoB,OAAO,CAAC,QAAQ;WAClD,CAAC,MAAM;YACR,CAAC,CAAC,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAC;YACzC,CAAC,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAA;IAE7C,2EAA2E;IAC3E,MAAM,MAAM,GAAoB,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QAC3D,sEAAsE;QACtE,+DAA+D;QAC/D,uEAAuE;QACvE,IACE,KAAK,CAAC,GAAG,CAAC,QAAQ,KAAK,eAAe;YACtC,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,EAC/B,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YAClD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YACvC,KAAK,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;QACzD,CAAC;QAED,kBAAkB;QAClB,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QAC9D,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,CAAA;QAEjD,uEAAuE;QACvE,MAAM,gBAAgB,GAAG,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;QAC9D,IAAI,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAA;YACrC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAA;YAC3D,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,oCAAoC;QACpC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,OAAO;YAC/B,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE;YAChE,CAAC,CAAC,IAAI,CAAA;QAER,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,UAAU;gBACrB,CAAC,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;gBACvC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAA;YAChB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;QAC7B,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;QAC7B,CAAC;QAED,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC,CAAA;IAED,2EAA2E;IAC3E,MAAM,kBAAkB,GAA4B,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACxE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;QAChE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;QAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,OAAO,CAAA;QAEnE,oCAAoC;QACpC,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QAC5C,CAAC;QAED,oCAAoC;QACpC,IAAI,WAAW,GAAkB,IAAI,CAAA;QACrC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;YACjC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;YACxC,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,QAAQ,CAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QAChE,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,QAAQ,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QAC9D,CAAC;QAED,kCAAkC;QAClC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;QAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,QAAQ,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QAC9D,CAAC;QAED,kBAAkB;QAClB,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QAChD,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,WAAW,EAAE,CAAC;YACnC,OAAO,IAAI,QAAQ,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QACxD,CAAC;QAED,oBAAoB;QACpB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAA;QAC1E,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,QAAQ,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QAC1D,CAAC;QAED,wBAAwB;QACxB,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAwC,CAAA;QACvE,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,wBAAwB,IAAI,MAAM,CAAC,EAAE,CAAC;YACrD,OAAO,IAAI,QAAQ,CAAC,wCAAwC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QAChF,CAAC;QAED,qBAAqB;QACrB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1D,OAAO,IAAI,QAAQ,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QAC3D,CAAC;QAED,2EAA2E;QAC3E,0DAA0D;QAC1D,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;IAC5C,CAAC,CAAA;IAED,2EAA2E;IAC3E,MAAM,aAAa,GAA4B,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE;QACxE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;QAElD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,4DAA4D;YAC5D,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;YAC5C,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE;gBACrD,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CAAC,CAAA;QACJ,CAAC;QAED,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,OAAO,CAAA;QACnE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,IAAI,EAAE,CAAA;QAChF,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,SAAS,EAAE,QAAQ;YACnB,wBAAwB,EAAE,GAAG,OAAO,GAAG;SACxC,CAAC,CAAA;QAEF,MAAM,aAAa,GAAG,GAAG,SAAS,+BAA+B,MAAM,EAAE,CAAA;QACzE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,EAAE;YAC/D,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAChD,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,0EAA0E;IAC1E,MAAM,WAAW,GAAG,4BAA4B,CAAC;QAC/C,UAAU,EAAE,aAAa;KAC1B,CAAC,CAAA;IACF,MAAM,eAAe,GAAG,CAAC,KAAqB,EAAY,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAEvF,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,CAAA;AACtF,CAAC;AA8BD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,aAAa,CAAC,OAA6B;IACzD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IAE/C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,8CAA8C;QAC9C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;QACrE,OAAO,kBAAkB,MAAM,EAAE,CAAA;IACnC,CAAC;IAED,sDAAsD;IACtD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,QAAQ,EAAE,OAAO,CAAC,WAAW;KAC9B,CAAC,CAAA;IACF,IAAI,OAAO,CAAC,OAAO;QAAE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3D,IAAI,OAAO,CAAC,MAAM;QAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IAExD,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,MAAM,EAAE,CAAA;AACvD,CAAC"}
1
+ {"version":3,"file":"sveltekit.js","sourceRoot":"","sources":["../../../src/modules/auth/sveltekit.ts"],"names":[],"mappings":"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"}
@@ -2,54 +2,44 @@
2
2
  * @module modules/skills
3
3
  * @description Skill loading and registry for @soulcraft/sdk.
4
4
  *
5
- * Skills are SKILL.md files that define an AI persona, capabilities, and workflow
6
- * for a kit domain. This module provides a unified `load()`/`list()`/`install()`
7
- * API backed by VFS storage.
5
+ * Skills are SKILL.md files stored in the Brainy VFS at `/.soulcraft/skills/{id}/SKILL.md`.
6
+ * Each skill is a directory containing a SKILL.md with YAML frontmatter (name, description,
7
+ * type, etc.) and markdown instructions.
8
8
  *
9
- * **VFS** `/skills/{kitId}/{skillId}.md` in the Brainy VFS. Managed at runtime
10
- * via `install()` or the kit initialization pipeline. Skills are installed from
11
- * the Forge Kit Registry during kit provisioning.
12
- *
13
- * For tests, pass `bundledRegistry` to inject an in-memory skill map without
14
- * any VFS or filesystem access.
9
+ * Skills are seeded from the kit at workspace creation time and can be customized per workspace.
10
+ * All products (Workshop, Venue, Academy, Pulse) read from the same path.
15
11
  *
16
12
  * ## VFS path convention
17
13
  * ```
18
- * /skills/{kitId}/{skillId}.md
14
+ * /.soulcraft/skills/{skill-id}/SKILL.md
19
15
  * ```
20
- * Example: `/skills/wicks-and-whiskers/inventory-health.md`
16
+ * Example: `/.soulcraft/skills/candle-expertise/SKILL.md`
21
17
  */
22
18
  import type { Brainy } from '@soulcraft/brainy';
23
19
  import type { SkillsModule } from './types.js';
20
+ /** Standard path for skills in every Brainy instance. */
21
+ export declare const SKILLS_DIR = "/.soulcraft/skills";
24
22
  /**
25
- * Options for {@link createSkillsModule}.
26
- */
27
- export interface CreateSkillsModuleOptions {
28
- /**
29
- * Inject an in-memory skill registry for tests. When provided, these skills
30
- * serve as the fallback when VFS lookup misses.
31
- */
32
- bundledRegistry?: Record<string, Record<string, string>> | null;
33
- }
34
- /**
35
- * Creates a `SkillsModule` backed by a Brainy VFS instance.
23
+ * @description Creates a `SkillsModule` backed by a Brainy VFS instance.
36
24
  *
37
- * Skills are loaded from the VFS at `/skills/{kitId}/{skillId}.md`. For tests,
38
- * pass `bundledRegistry` in options to provide an in-memory fallback.
25
+ * Skills are loaded from `/.soulcraft/skills/{id}/SKILL.md`. Each skill directory
26
+ * contains a SKILL.md file with YAML frontmatter and markdown instructions.
39
27
  *
40
- * @param brain - An initialized Brainy instance. Required for VFS operations.
41
- * Pass `null` to disable VFS skill loading (test registry only).
28
+ * @param brain - An initialized Brainy instance (or null for test-only mode).
42
29
  * @param options - Optional configuration including a registry override for tests.
43
30
  * @returns A configured {@link SkillsModule}.
44
31
  *
45
32
  * @example
46
33
  * ```typescript
47
- * const brain = await pool.forUser(user.emailHash, workspaceId)
48
34
  * const skills = createSkillsModule(brain)
49
- *
50
- * const skill = await skills.load('inventory-health', 'wicks-and-whiskers')
35
+ * const all = await skills.list()
36
+ * const skill = await skills.load('candle-expertise')
51
37
  * ```
52
38
  */
39
+ export interface CreateSkillsModuleOptions {
40
+ /** In-memory skill registry for tests. */
41
+ bundledRegistry?: Record<string, string> | null;
42
+ }
53
43
  export declare function createSkillsModule(brain: Brainy | null, options?: CreateSkillsModuleOptions): SkillsModule;
54
44
  export type { SkillsModule, Skill, SkillListOptions, SkillInstallOptions, } from './types.js';
55
45
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/skills/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAgD,MAAM,YAAY,CAAA;AAM5F;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAA;CAChE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,OAAO,GAAE,yBAA8B,GACtC,YAAY,CAgDd;AAwJD,YAAY,EACV,YAAY,EACZ,KAAK,EACL,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/skills/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAgD,MAAM,YAAY,CAAA;AAE5F,yDAAyD;AACzD,eAAO,MAAM,UAAU,uBAAuB,CAAA;AAE9C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,yBAAyB;IACxC,0CAA0C;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;CAChD;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,OAAO,GAAE,yBAA8B,GACtC,YAAY,CA6Cd;AAgDD,YAAY,EACV,YAAY,EACZ,KAAK,EACL,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAA"}
@@ -2,220 +2,103 @@
2
2
  * @module modules/skills
3
3
  * @description Skill loading and registry for @soulcraft/sdk.
4
4
  *
5
- * Skills are SKILL.md files that define an AI persona, capabilities, and workflow
6
- * for a kit domain. This module provides a unified `load()`/`list()`/`install()`
7
- * API backed by VFS storage.
5
+ * Skills are SKILL.md files stored in the Brainy VFS at `/.soulcraft/skills/{id}/SKILL.md`.
6
+ * Each skill is a directory containing a SKILL.md with YAML frontmatter (name, description,
7
+ * type, etc.) and markdown instructions.
8
8
  *
9
- * **VFS** `/skills/{kitId}/{skillId}.md` in the Brainy VFS. Managed at runtime
10
- * via `install()` or the kit initialization pipeline. Skills are installed from
11
- * the Forge Kit Registry during kit provisioning.
12
- *
13
- * For tests, pass `bundledRegistry` to inject an in-memory skill map without
14
- * any VFS or filesystem access.
9
+ * Skills are seeded from the kit at workspace creation time and can be customized per workspace.
10
+ * All products (Workshop, Venue, Academy, Pulse) read from the same path.
15
11
  *
16
12
  * ## VFS path convention
17
13
  * ```
18
- * /skills/{kitId}/{skillId}.md
19
- * ```
20
- * Example: `/skills/wicks-and-whiskers/inventory-health.md`
21
- */
22
- /**
23
- * Creates a `SkillsModule` backed by a Brainy VFS instance.
24
- *
25
- * Skills are loaded from the VFS at `/skills/{kitId}/{skillId}.md`. For tests,
26
- * pass `bundledRegistry` in options to provide an in-memory fallback.
27
- *
28
- * @param brain - An initialized Brainy instance. Required for VFS operations.
29
- * Pass `null` to disable VFS skill loading (test registry only).
30
- * @param options - Optional configuration including a registry override for tests.
31
- * @returns A configured {@link SkillsModule}.
32
- *
33
- * @example
34
- * ```typescript
35
- * const brain = await pool.forUser(user.emailHash, workspaceId)
36
- * const skills = createSkillsModule(brain)
37
- *
38
- * const skill = await skills.load('inventory-health', 'wicks-and-whiskers')
14
+ * /.soulcraft/skills/{skill-id}/SKILL.md
39
15
  * ```
16
+ * Example: `/.soulcraft/skills/candle-expertise/SKILL.md`
40
17
  */
18
+ /** Standard path for skills in every Brainy instance. */
19
+ export const SKILLS_DIR = '/.soulcraft/skills';
41
20
  export function createSkillsModule(brain, options = {}) {
42
- const getTestRegistry = options.bundledRegistry !== undefined
43
- ? () => options.bundledRegistry ?? null
44
- : () => null;
21
+ const testRegistry = options.bundledRegistry ?? null;
45
22
  return {
46
- async load(id, kitId) {
47
- // 1. Try VFS first
23
+ async load(id) {
48
24
  if (brain) {
49
- const vfsSkill = await _loadFromVfs(brain, id, kitId);
50
- if (vfsSkill)
51
- return vfsSkill;
25
+ const skill = await _loadFromVfs(brain, id);
26
+ if (skill)
27
+ return skill;
52
28
  }
53
- // 2. Fall back to test registry (only populated in tests)
54
- return _loadBundled(id, kitId, getTestRegistry);
29
+ if (testRegistry && testRegistry[id]) {
30
+ return { id, content: testRegistry[id], source: 'bundled' };
31
+ }
32
+ return null;
55
33
  },
56
- async list(options = {}) {
57
- const { kitId, includeVfs = true, includeBundled = true } = options;
34
+ async list(opts = {}) {
58
35
  const results = [];
59
- // Collect VFS skills
60
- if (includeVfs && brain) {
61
- const vfsSkills = await _listFromVfs(brain, kitId);
36
+ if (brain) {
37
+ const vfsSkills = await _listFromVfs(brain);
62
38
  results.push(...vfsSkills);
63
39
  }
64
- // Collect test registry skills (only populated in tests)
65
- if (includeBundled) {
66
- const bundledSkills = _listBundled(kitId, getTestRegistry);
67
- results.push(...bundledSkills);
40
+ if (testRegistry) {
41
+ for (const [id, content] of Object.entries(testRegistry)) {
42
+ if (!results.some(s => s.id === id)) {
43
+ results.push({ id, content, source: 'bundled' });
44
+ }
45
+ }
68
46
  }
69
47
  return results;
70
48
  },
71
49
  async install(options) {
72
50
  if (!brain) {
73
- throw new Error('sdk.skills.install() requires a Brainy instance with VFS support. ' +
74
- 'Ensure the SDK was created with a valid brain parameter.');
51
+ throw new Error('sdk.skills.install() requires a Brainy instance with VFS support.');
75
52
  }
76
- const { id, kitId, content } = options;
77
- const vfsPath = `/skills/${kitId}/${id}.md`;
78
- await brain.vfs.writeFile(vfsPath, content);
53
+ const { id, content } = options;
54
+ const dirPath = `${SKILLS_DIR}/${id}`;
55
+ const filePath = `${dirPath}/SKILL.md`;
56
+ await brain.vfs.mkdir(dirPath, { recursive: true });
57
+ await brain.vfs.writeFile(filePath, content);
79
58
  },
80
59
  };
81
60
  }
82
- // ─────────────────────────────────────────────────────────────────────────────
83
- // VFS helpers
84
- // ─────────────────────────────────────────────────────────────────────────────
85
61
  /**
86
- * Load a skill from the VFS at `/skills/{kitId}/{id}.md`.
87
- *
88
- * @param brain - Initialized Brainy instance.
89
- * @param id - Skill ID.
90
- * @param kitId - Kit ID.
91
- * @returns The skill if found, or `null`.
62
+ * @description Load a skill from VFS at `/.soulcraft/skills/{id}/SKILL.md`.
92
63
  */
93
- async function _loadFromVfs(brain, id, kitId) {
94
- const vfsPath = `/skills/${kitId}/${id}.md`;
64
+ async function _loadFromVfs(brain, id) {
65
+ const filePath = `${SKILLS_DIR}/${id}/SKILL.md`;
95
66
  try {
96
- const raw = await brain.vfs.readFile(vfsPath);
67
+ const raw = await brain.vfs.readFile(filePath);
97
68
  const content = Buffer.isBuffer(raw) ? raw.toString('utf-8') : String(raw);
98
- return { id, kitId, content, source: 'vfs' };
69
+ return { id, content, source: 'vfs' };
99
70
  }
100
71
  catch {
101
- // File not found in VFS — normal, fall through to bundled
102
72
  return null;
103
73
  }
104
74
  }
105
75
  /**
106
- * List all skills installed in the VFS, optionally filtered by kit ID.
107
- *
108
- * @param brain - Initialized Brainy instance.
109
- * @param kitId - Optional kit filter. If omitted, all skills are returned.
110
- * @returns Array of VFS-sourced skills.
76
+ * @description List all skills from VFS at `/.soulcraft/skills/`.
111
77
  */
112
- async function _listFromVfs(brain, kitId) {
78
+ async function _listFromVfs(brain) {
113
79
  const results = [];
114
80
  try {
115
- if (kitId) {
116
- // List skills for a specific kit
117
- const dir = `/skills/${kitId}`;
118
- const entries = await brain.vfs.readdir(dir);
119
- for (const entry of entries) {
120
- if (typeof entry === 'string' && entry.endsWith('.md')) {
121
- const id = entry.slice(0, -3); // strip .md
122
- const vfsPath = `${dir}/${entry}`;
123
- try {
124
- const raw = await brain.vfs.readFile(vfsPath);
125
- const content = Buffer.isBuffer(raw) ? raw.toString('utf-8') : String(raw);
126
- results.push({ id, kitId, content, source: 'vfs' });
127
- }
128
- catch {
129
- // Skip unreadable files
130
- }
131
- }
132
- else if (typeof entry === 'object' && 'name' in entry) {
133
- const name = entry.name;
134
- if (name.endsWith('.md')) {
135
- const id = name.slice(0, -3);
136
- const vfsPath = `${dir}/${name}`;
137
- try {
138
- const raw = await brain.vfs.readFile(vfsPath);
139
- const content = Buffer.isBuffer(raw) ? raw.toString('utf-8') : String(raw);
140
- results.push({ id, kitId, content, source: 'vfs' });
141
- }
142
- catch {
143
- // Skip unreadable files
144
- }
145
- }
146
- }
147
- }
148
- }
149
- else {
150
- // List all kits then list skills per kit
151
- const skillsDir = '/skills';
152
- let kitEntries;
81
+ const entries = await brain.vfs.readdir(SKILLS_DIR);
82
+ for (const entry of entries) {
83
+ const name = typeof entry === 'string' ? entry
84
+ : typeof entry === 'object' && entry !== null && 'name' in entry
85
+ ? entry.name
86
+ : null;
87
+ if (!name)
88
+ continue;
89
+ const filePath = `${SKILLS_DIR}/${name}/SKILL.md`;
153
90
  try {
154
- kitEntries = await brain.vfs.readdir(skillsDir);
91
+ const raw = await brain.vfs.readFile(filePath);
92
+ const content = Buffer.isBuffer(raw) ? raw.toString('utf-8') : String(raw);
93
+ results.push({ id: name, content, source: 'vfs' });
155
94
  }
156
95
  catch {
157
- return results; // /skills doesn't exist yet
158
- }
159
- for (const kitEntry of kitEntries) {
160
- const kitName = typeof kitEntry === 'string' ? kitEntry
161
- : typeof kitEntry === 'object' && kitEntry !== null && 'name' in kitEntry
162
- ? kitEntry.name
163
- : null;
164
- if (!kitName)
165
- continue;
166
- const kitSkills = await _listFromVfs(brain, kitName);
167
- results.push(...kitSkills);
96
+ // Subdirectory without SKILL.md skip
168
97
  }
169
98
  }
170
99
  }
171
100
  catch {
172
- // VFS unavailable or /skills not initialized — return empty
173
- }
174
- return results;
175
- }
176
- // ─────────────────────────────────────────────────────────────────────────────
177
- // Bundled registry helpers
178
- // ─────────────────────────────────────────────────────────────────────────────
179
- /**
180
- * Load a single skill from the in-memory test registry.
181
- *
182
- * @param id - Skill ID.
183
- * @param kitId - Kit ID.
184
- * @param getRegistry - Function that returns the test registry (or null).
185
- * @returns The skill if found, or `null`.
186
- */
187
- function _loadBundled(id, kitId, getRegistry) {
188
- const registry = getRegistry();
189
- if (!registry)
190
- return null;
191
- const kitSkills = registry[kitId];
192
- if (!kitSkills)
193
- return null;
194
- const content = kitSkills[id];
195
- if (!content)
196
- return null;
197
- return { id, kitId, content, source: 'bundled' };
198
- }
199
- /**
200
- * List skills from the in-memory test registry, optionally filtered by kit ID.
201
- *
202
- * @param kitId - Optional kit filter.
203
- * @param getRegistry - Function that returns the test registry (or null).
204
- * @returns Array of skills from the registry.
205
- */
206
- function _listBundled(kitId, getRegistry) {
207
- const registry = getRegistry();
208
- if (!registry)
209
- return [];
210
- const results = [];
211
- const kitsToList = kitId ? [kitId] : Object.keys(registry);
212
- for (const kit of kitsToList) {
213
- const kitSkills = registry[kit];
214
- if (!kitSkills)
215
- continue;
216
- for (const [skillId, content] of Object.entries(kitSkills)) {
217
- results.push({ id: skillId, kitId: kit, content, source: 'bundled' });
218
- }
101
+ // /.soulcraft/skills doesn't exist yet — return empty
219
102
  }
220
103
  return results;
221
104
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/skills/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/skills/index.ts"],"names":[],"mappings":"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"}
@@ -2,120 +2,97 @@
2
2
  * @module modules/skills/types
3
3
  * @description Type definitions for `sdk.skills.*` — the skill loading and registry system.
4
4
  *
5
- * Skills are Markdown files (SKILL.md convention) that define an AI persona,
6
- * capabilities, glossary, and workflow steps for a specific domain. They drive
7
- * Brainy AI system prompt construction and define what Claude knows how to do
8
- * within a kit's context.
5
+ * Skills are SKILL.md files stored at `/.soulcraft/skills/{id}/SKILL.md` in the Brainy VFS.
6
+ * Each skill is a directory containing a SKILL.md with YAML frontmatter and markdown
7
+ * instructions that define an AI persona, capabilities, or workflow.
9
8
  *
10
- * Skills are stored in the Brainy VFS at `/skills/{kitId}/{skillId}.md`,
11
- * installed by the kit initialization pipeline or via `sdk.skills.install()`.
9
+ * Skills are workspace-scoped seeded from the kit at creation time and customizable
10
+ * per workspace. All products (Workshop, Venue, Academy, Pulse) read from the same path.
12
11
  *
13
- * ## Skill ID convention
12
+ * ## Skill types (via `type:` frontmatter)
13
+ * - `background` — passive knowledge, always loaded into AI context
14
+ * - `active` — user and/or AI can invoke
14
15
  *
15
- * Skill IDs are kebab-case strings matching the `id:` frontmatter field in the
16
- * SKILL.md file. Examples: `'inventory-health'`, `'session-flow'`, `'daily-brief'`.
16
+ * ## Path convention
17
+ * ```
18
+ * /.soulcraft/skills/{skill-id}/SKILL.md
19
+ * ```
17
20
  */
18
21
  /**
19
- * A parsed skill loaded from VFS or an in-memory test registry.
22
+ * @description A parsed skill loaded from VFS or an in-memory test registry.
20
23
  */
21
24
  export interface Skill {
22
- /** Kebab-case skill identifier (matches the `id:` frontmatter field). */
25
+ /** Kebab-case skill identifier (matches the directory name and `id:` frontmatter). */
23
26
  id: string;
24
- /** The kit this skill belongs to (`null` for global/shared skills). */
25
- kitId: string | null;
26
- /** The full SKILL.md content including YAML frontmatter. */
27
+ /** The full SKILL.md content including YAML frontmatter and markdown instructions. */
27
28
  content: string;
28
29
  /** Where this skill was loaded from. */
29
30
  source: 'vfs' | 'bundled';
30
31
  }
31
32
  /**
32
- * Options for listing skills.
33
+ * @description Options for listing skills.
33
34
  */
34
35
  export interface SkillListOptions {
35
- /**
36
- * Filter by kit ID. When omitted, all skills across all kits are returned.
37
- */
38
- kitId?: string;
39
- /**
40
- * Whether to include VFS-installed skills in the results.
41
- *
42
- * @default true
43
- */
44
- includeVfs?: boolean;
45
- /**
46
- * Whether to include skills from the test registry (when provided) in results.
47
- *
48
- * @default true
49
- */
50
- includeBundled?: boolean;
36
+ /** Reserved for future filtering. */
37
+ _?: never;
51
38
  }
52
39
  /**
53
- * Options for installing a skill into the VFS.
40
+ * @description Options for installing a skill into the VFS.
54
41
  */
55
42
  export interface SkillInstallOptions {
56
- /** The skill ID (kebab-case). */
43
+ /** The skill ID (kebab-case). Becomes the directory name. */
57
44
  id: string;
58
- /** The kit this skill belongs to. */
59
- kitId: string;
60
45
  /** The full SKILL.md content including YAML frontmatter. */
61
46
  content: string;
62
47
  }
63
48
  /**
64
- * The `sdk.skills` namespace.
49
+ * @description The `sdk.skills` namespace.
65
50
  *
66
51
  * Provides a unified interface for loading, listing, and installing skills
67
- * from the Brainy VFS.
52
+ * from the Brainy VFS at `/.soulcraft/skills/`.
68
53
  *
69
54
  * @example Loading a specific skill
70
55
  * ```typescript
71
- * const skill = await sdk.skills.load('inventory-health', 'wicks-and-whiskers')
56
+ * const skill = await sdk.skills.load('candle-expertise')
72
57
  * if (skill) {
73
- * const systemPrompt = buildSystemPrompt(kit, [skill.content])
58
+ * const systemPrompt = buildSystemPrompt([skill.content])
74
59
  * }
75
60
  * ```
76
61
  *
77
- * @example Listing all skills for a kit
62
+ * @example Listing all skills
78
63
  * ```typescript
79
- * const skills = await sdk.skills.list({ kitId: 'wicks-and-whiskers' })
80
- * const systemPrompt = buildSystemPrompt(kit, skills.map(s => s.content))
64
+ * const skills = await sdk.skills.list()
65
+ * const systemPrompt = buildSystemPrompt(skills.map(s => s.content))
81
66
  * ```
82
67
  *
83
- * @example Installing a skill into VFS
68
+ * @example Installing a skill
84
69
  * ```typescript
85
70
  * await sdk.skills.install({
86
71
  * id: 'custom-flow',
87
- * kitId: 'wicks-and-whiskers',
88
- * content: `---\nid: custom-flow\ntitle: Custom Flow\n---\n...`,
72
+ * content: '---\nid: custom-flow\nname: Custom Flow\ntype: active\n---\n...',
89
73
  * })
90
74
  * ```
91
75
  */
92
76
  export interface SkillsModule {
93
77
  /**
94
- * Load a single skill by ID, searching VFS first then bundled registry.
78
+ * @description Load a single skill by ID from `/.soulcraft/skills/{id}/SKILL.md`.
95
79
  *
96
- * @param id - Kebab-case skill ID (e.g. `'inventory-health'`).
97
- * @param kitId - The kit the skill belongs to.
98
- * @returns The skill, or `null` if not found in VFS or bundled registry.
80
+ * @param id - Kebab-case skill ID (e.g. `'candle-expertise'`).
81
+ * @returns The skill, or `null` if not found.
99
82
  */
100
- load(id: string, kitId: string): Promise<Skill | null>;
83
+ load(id: string): Promise<Skill | null>;
101
84
  /**
102
- * List skills matching the given options.
103
- *
104
- * Skills are returned from VFS. When a test registry is provided, VFS skills
105
- * appear first, followed by test registry skills (no deduplication).
85
+ * @description List all skills in the workspace.
106
86
  *
107
- * @param options - Filtering options.
108
- * @returns An array of matching skills.
87
+ * @param options - Optional filtering (reserved for future use).
88
+ * @returns Array of all installed skills.
109
89
  */
110
90
  list(options?: SkillListOptions): Promise<Skill[]>;
111
91
  /**
112
- * Install a skill into the VFS, making it available to all future `load()` calls.
113
- *
114
- * Writes the skill content to `/skills/{kitId}/{id}.md` in the Brainy VFS.
115
- * Overwrites any existing skill at that path.
92
+ * @description Install a skill into `/.soulcraft/skills/{id}/SKILL.md`.
93
+ * Creates the directory if it doesn't exist. Overwrites if it does.
116
94
  *
117
- * @param options - The skill to install.
118
- * @throws {Error} If the VFS is not available on this SDK instance.
95
+ * @param options - The skill ID and content to install.
119
96
  */
120
97
  install(options: SkillInstallOptions): Promise<void>;
121
98
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/modules/skills/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,yEAAyE;IACzE,EAAE,EAAE,MAAM,CAAA;IACV,uEAAuE;IACvE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAA;IACf,wCAAwC;IACxC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAA;CAChB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;IAEtD;;;;;;;;OAQG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;IAElD;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACrD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/modules/skills/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,sFAAsF;IACtF,EAAE,EAAE,MAAM,CAAA;IACV,sFAAsF;IACtF,OAAO,EAAE,MAAM,CAAA;IACf,wCAAwC;IACxC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,CAAC,CAAC,EAAE,KAAK,CAAA;CACV;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,6DAA6D;IAC7D,EAAE,EAAE,MAAM,CAAA;IACV,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;IAEvC;;;;;OAKG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;IAElD;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACrD"}
@@ -2,18 +2,21 @@
2
2
  * @module modules/skills/types
3
3
  * @description Type definitions for `sdk.skills.*` — the skill loading and registry system.
4
4
  *
5
- * Skills are Markdown files (SKILL.md convention) that define an AI persona,
6
- * capabilities, glossary, and workflow steps for a specific domain. They drive
7
- * Brainy AI system prompt construction and define what Claude knows how to do
8
- * within a kit's context.
5
+ * Skills are SKILL.md files stored at `/.soulcraft/skills/{id}/SKILL.md` in the Brainy VFS.
6
+ * Each skill is a directory containing a SKILL.md with YAML frontmatter and markdown
7
+ * instructions that define an AI persona, capabilities, or workflow.
9
8
  *
10
- * Skills are stored in the Brainy VFS at `/skills/{kitId}/{skillId}.md`,
11
- * installed by the kit initialization pipeline or via `sdk.skills.install()`.
9
+ * Skills are workspace-scoped seeded from the kit at creation time and customizable
10
+ * per workspace. All products (Workshop, Venue, Academy, Pulse) read from the same path.
12
11
  *
13
- * ## Skill ID convention
12
+ * ## Skill types (via `type:` frontmatter)
13
+ * - `background` — passive knowledge, always loaded into AI context
14
+ * - `active` — user and/or AI can invoke
14
15
  *
15
- * Skill IDs are kebab-case strings matching the `id:` frontmatter field in the
16
- * SKILL.md file. Examples: `'inventory-health'`, `'session-flow'`, `'daily-brief'`.
16
+ * ## Path convention
17
+ * ```
18
+ * /.soulcraft/skills/{skill-id}/SKILL.md
19
+ * ```
17
20
  */
18
21
  export {};
19
22
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/modules/skills/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/modules/skills/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG"}
@@ -5,20 +5,17 @@
5
5
  *
6
6
  * ## Entity Model
7
7
  *
8
- * Each generated image is stored as two Brainy entities connected by a verb:
8
+ * Each generated image is stored as two Brainy entities:
9
9
  *
10
- * - **Noun** (type: `document`) — the generation record: prompt text as `data`
11
- * (enables Cortex semantic search), with style, seed, dimensions, timing in
12
- * `metadata`. Marked with `metadata.imagineGeneration: true` to distinguish
13
- * from other document nouns.
10
+ * - **Media noun** (`type: 'media'`) — the generation record with prompt text
11
+ * in `data` (enables Cortex semantic search) and structured parameters in
12
+ * `metadata` (style, seed, dimensions, timing, vfsPath).
14
13
  *
15
- * - **VFS file** (type: `media`) — the actual PNG bytes at `/images/{id}.png`,
16
- * managed by Brainy's virtual filesystem. Has `metadata.isVFS: true`.
14
+ * - **VFS file** — the actual PNG bytes at `/images/{uuid}.png`, auto-created
15
+ * by `brain.vfs.writeFile()` with `metadata.isVFS: true`.
17
16
  *
18
- * - **Verb** (`creates`) relates the generation document to the VFS image.
19
- *
20
- * Gallery queries target `noun: 'document'` with `metadata.imagineGeneration: true`,
21
- * so VFS entries and other document types are excluded.
17
+ * Gallery queries use `excludeVFS: true` to return only the generation records,
18
+ * not the raw VFS file entities.
22
19
  */
23
20
  import type { NamespaceProvider } from '../namespace-router.js';
24
21
  /**
@@ -79,17 +76,13 @@ export interface ImagineBackend {
79
76
  height: number;
80
77
  }>;
81
78
  }
82
- /**
83
- * @description Options for {@link createImagineHandler}.
84
- */
85
79
  export interface ImagineHandlerOptions {
86
80
  backend: ImagineBackend;
87
81
  }
88
82
  /**
89
83
  * @description Creates the `imagine` namespace handler.
90
- *
91
- * @param options - Handler dependencies. If omitted, all methods throw.
92
- * @returns A {@link NamespaceProvider} implementing {@link ImagineNamespace}.
84
+ * @param options - Handler dependencies with GPU backend.
85
+ * @returns A {@link NamespaceProvider} for the `imagine` namespace.
93
86
  */
94
87
  export declare function createImagineHandler(options?: ImagineHandlerOptions): NamespaceProvider;
95
88
  //# sourceMappingURL=imagine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"imagine.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/imagine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAkB,MAAM,wBAAwB,CAAA;AAM/E;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CACN,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;QAC7C,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAC9C,EACD,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,KAAK,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAEjG,cAAc,CAAC,CACb,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;QAC7C,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAC9C,EACD,MAAM,EAAE,MAAM,GACb,aAAa,CACZ;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GACjD;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GACrF;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CACrC,CAAA;IAED,MAAM,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,IAAI,GAAG,aAAa,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAChF,eAAe,IAAI,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC7F,cAAc,IAAI,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACvF;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,cAAc,CAAA;CACxB;AAsHD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,iBAAiB,CA4MvF"}
1
+ {"version":3,"file":"imagine.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/imagine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAkB,MAAM,wBAAwB,CAAA;AAM/E;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CACN,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;QAC7C,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAC9C,EACD,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,KAAK,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAEjG,cAAc,CAAC,CACb,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;QAC7C,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAC9C,EACD,MAAM,EAAE,MAAM,GACb,aAAa,CACZ;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GACjD;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GACrF;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CACrC,CAAA;IAED,MAAM,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,IAAI,GAAG,aAAa,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAChF,eAAe,IAAI,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC7F,cAAc,IAAI,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACvF;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,cAAc,CAAA;CACxB;AAsFD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,iBAAiB,CAyGvF"}
@@ -5,90 +5,67 @@
5
5
  *
6
6
  * ## Entity Model
7
7
  *
8
- * Each generated image is stored as two Brainy entities connected by a verb:
8
+ * Each generated image is stored as two Brainy entities:
9
9
  *
10
- * - **Noun** (type: `document`) — the generation record: prompt text as `data`
11
- * (enables Cortex semantic search), with style, seed, dimensions, timing in
12
- * `metadata`. Marked with `metadata.imagineGeneration: true` to distinguish
13
- * from other document nouns.
10
+ * - **Media noun** (`type: 'media'`) — the generation record with prompt text
11
+ * in `data` (enables Cortex semantic search) and structured parameters in
12
+ * `metadata` (style, seed, dimensions, timing, vfsPath).
14
13
  *
15
- * - **VFS file** (type: `media`) — the actual PNG bytes at `/images/{id}.png`,
16
- * managed by Brainy's virtual filesystem. Has `metadata.isVFS: true`.
14
+ * - **VFS file** — the actual PNG bytes at `/images/{uuid}.png`, auto-created
15
+ * by `brain.vfs.writeFile()` with `metadata.isVFS: true`.
17
16
  *
18
- * - **Verb** (`creates`) relates the generation document to the VFS image.
19
- *
20
- * Gallery queries target `noun: 'document'` with `metadata.imagineGeneration: true`,
21
- * so VFS entries and other document types are excluded.
17
+ * Gallery queries use `excludeVFS: true` to return only the generation records,
18
+ * not the raw VFS file entities.
22
19
  */
23
20
  // ─────────────────────────────────────────────────────────────────────────────
24
21
  // Constants
25
22
  // ─────────────────────────────────────────────────────────────────────────────
26
- /** VFS directory where generated images are stored. */
27
23
  const IMAGES_VFS_PATH = '/images';
28
- /** Brainy noun type for generation records (the prompt/metadata, not the image). */
29
- const GEN_NOUN_TYPE = 'document';
30
- /** Metadata flag distinguishing Imagine generation records from other documents. */
31
- const GEN_FLAG = 'imagineGeneration';
32
- /** Verb type linking generation → VFS image file. */
33
- const GEN_VERB = 'creates';
24
+ const NOUN_TYPE = 'media';
34
25
  // ─────────────────────────────────────────────────────────────────────────────
35
- // Internal helpers
26
+ // Helpers
36
27
  // ─────────────────────────────────────────────────────────────────────────────
37
28
  function resolveStylePrefix(key, backend) {
38
- const preset = backend.getStylePresets().find((s) => s.key === key);
39
- return preset?.prefix ?? '';
29
+ return backend.getStylePresets().find((s) => s.key === key)?.prefix ?? '';
40
30
  }
41
31
  function resolveDimensions(key, backend) {
42
- const preset = backend.getSizePresets().find((s) => s.key === key);
43
- return preset ?? { width: 1024, height: 576 };
32
+ return backend.getSizePresets().find((s) => s.key === key) ?? { width: 1024, height: 576 };
44
33
  }
45
34
  /**
46
- * @description Extract image metadata from a Brainy generation entity.
47
- * The prompt is stored as `data` (string); structured fields in `metadata`.
35
+ * @description Extract image metadata from a Brainy entity. The prompt is
36
+ * stored as `data` (string for semantic search); parameters in `metadata`.
48
37
  */
49
38
  function toImageMeta(r) {
50
- const meta = (r.metadata ?? {});
51
- const prompt = typeof r.data === 'string' ? r.data : '';
39
+ const m = (r.metadata ?? {});
52
40
  return {
53
41
  id: r.id,
54
- prompt,
55
- style: meta['style'] ?? 'none',
56
- size: meta['size'] ?? 'landscape',
57
- steps: meta['steps'] ?? 25,
58
- guidance: meta['guidance'] ?? 7.5,
59
- seed: meta['seed'] ?? 0,
60
- width: meta['width'] ?? 1024,
61
- height: meta['height'] ?? 576,
62
- elapsed: meta['elapsed'] ?? 0,
63
- createdAt: meta['createdAt'] ?? 0,
42
+ prompt: typeof r.data === 'string' ? r.data : '',
43
+ style: m['style'] ?? 'none',
44
+ size: m['size'] ?? 'landscape',
45
+ steps: m['steps'] ?? 25,
46
+ guidance: m['guidance'] ?? 7.5,
47
+ seed: m['seed'] ?? 0,
48
+ width: m['width'] ?? 1024,
49
+ height: m['height'] ?? 576,
50
+ elapsed: m['elapsed'] ?? 0,
51
+ createdAt: m['createdAt'] ?? 0,
64
52
  filename: `${r.id}.png`,
65
53
  };
66
54
  }
67
55
  /**
68
- * @description Store a generated image in Brainy.
69
- *
70
- * 1. Write PNG to VFS (`/images/{uuid}.png`) — creates a `media` noun internally
71
- * 2. Create `document` noun with prompt as data + generation metadata
72
- * 3. Relate document → VFS file via `creates` verb
73
- *
74
- * @returns The generation document entity ID.
56
+ * @description Store a generated image in Brainy: VFS file + media noun.
57
+ * @returns The media noun entity ID.
75
58
  */
76
59
  async function storeImage(brain, imageBytes, meta) {
77
- // 1. Write PNG to VFS
78
60
  await brain.vfs.mkdir(IMAGES_VFS_PATH, { recursive: true });
79
- // Use a temp ID for the filename — we'll use the generation entity ID
80
- const tempId = crypto.randomUUID();
81
- const vfsPath = `${IMAGES_VFS_PATH}/${tempId}.png`;
61
+ const fileId = crypto.randomUUID();
62
+ const vfsPath = `${IMAGES_VFS_PATH}/${fileId}.png`;
82
63
  await brain.vfs.writeFile(vfsPath, Buffer.from(imageBytes));
83
- // 2. Create generation document noun
84
- // data = prompt text (enables semantic search via Cortex)
85
- // metadata = structured generation parameters
86
64
  const genId = await brain.add({
87
- type: GEN_NOUN_TYPE,
65
+ type: NOUN_TYPE,
88
66
  data: meta.prompt,
89
67
  metadata: {
90
68
  name: meta.prompt.slice(0, 100),
91
- [GEN_FLAG]: true,
92
69
  style: meta.style,
93
70
  size: meta.size,
94
71
  steps: meta.steps,
@@ -101,14 +78,6 @@ async function storeImage(brain, imageBytes, meta) {
101
78
  vfsPath,
102
79
  },
103
80
  });
104
- // 3. Relate generation → VFS file
105
- await brain.relate({
106
- from: genId,
107
- to: vfsPath,
108
- type: GEN_VERB,
109
- }).catch(() => {
110
- // VFS entity may not be directly addressable — non-fatal
111
- });
112
81
  return genId;
113
82
  }
114
83
  // ─────────────────────────────────────────────────────────────────────────────
@@ -116,37 +85,33 @@ async function storeImage(brain, imageBytes, meta) {
116
85
  // ─────────────────────────────────────────────────────────────────────────────
117
86
  /**
118
87
  * @description Creates the `imagine` namespace handler.
119
- *
120
- * @param options - Handler dependencies. If omitted, all methods throw.
121
- * @returns A {@link NamespaceProvider} implementing {@link ImagineNamespace}.
88
+ * @param options - Handler dependencies with GPU backend.
89
+ * @returns A {@link NamespaceProvider} for the `imagine` namespace.
122
90
  */
123
91
  export function createImagineHandler(options) {
124
92
  const backend = options?.backend;
125
- function requireBackend() {
126
- if (!backend) {
127
- throw new Error('imagine namespace is not configured — provide an ImagineBackend via providers.imagine.');
128
- }
93
+ function gpu() {
94
+ if (!backend)
95
+ throw new Error('imagine namespace not configured — provide ImagineBackend');
129
96
  return backend;
130
97
  }
131
98
  return {
132
99
  async generate(params, ctx) {
133
- const gpu = requireBackend();
100
+ const g = gpu();
134
101
  const { brain } = ctx;
135
102
  const count = Math.min(Math.max(params.count ?? 1, 1), 4);
136
103
  const style = params.style ?? 'none';
137
104
  const sizeKey = params.size ?? 'landscape';
138
105
  const steps = params.steps ?? 25;
139
106
  const guidance = params.guidance ?? 7.5;
140
- const prefix = resolveStylePrefix(style, gpu);
141
- const { width, height } = resolveDimensions(sizeKey, gpu);
107
+ const prefix = resolveStylePrefix(style, g);
108
+ const { width, height } = resolveDimensions(sizeKey, g);
142
109
  const fullPrompt = prefix + params.prompt;
143
110
  const images = [];
144
111
  for (let i = 0; i < count; i++) {
145
- const seed = params.seed != null
146
- ? params.seed + i
147
- : Math.floor(Math.random() * 2147483647);
112
+ const seed = params.seed != null ? params.seed + i : Math.floor(Math.random() * 2147483647);
148
113
  const start = performance.now();
149
- const result = await gpu.generate({ prompt: fullPrompt, width, height, steps, guidance, seed }, ctx.user.id);
114
+ const result = await g.generate({ prompt: fullPrompt, width, height, steps, guidance, seed }, ctx.user.id);
150
115
  const elapsed = (performance.now() - start) / 1000;
151
116
  const id = await storeImage(brain, result.bytes, {
152
117
  prompt: params.prompt, style, size: sizeKey, steps, guidance,
@@ -160,83 +125,16 @@ export function createImagineHandler(options) {
160
125
  }
161
126
  return images;
162
127
  },
163
- async *generateStream(params, ctx) {
164
- const gpu = requireBackend();
165
- const { brain } = ctx;
166
- const style = params.style ?? 'none';
167
- const sizeKey = params.size ?? 'landscape';
168
- const steps = params.steps ?? 25;
169
- const guidance = params.guidance ?? 7.5;
170
- const seed = params.seed ?? Math.floor(Math.random() * 2147483647);
171
- const prefix = resolveStylePrefix(style, gpu);
172
- const { width, height } = resolveDimensions(sizeKey, gpu);
173
- const fullPrompt = prefix + params.prompt;
174
- if (gpu.generateStream) {
175
- const start = performance.now();
176
- let resultBytes = null;
177
- let resultSeed = seed, resultWidth = width, resultHeight = height;
178
- for await (const event of gpu.generateStream({ prompt: fullPrompt, width, height, steps, guidance, seed }, ctx.user.id)) {
179
- if (event.type === 'progress') {
180
- yield { type: 'progress', step: event.step, total: event.total };
181
- }
182
- else if (event.type === 'complete') {
183
- resultBytes = event.bytes;
184
- resultSeed = event.seed;
185
- resultWidth = event.width;
186
- resultHeight = event.height;
187
- }
188
- else if (event.type === 'error') {
189
- yield { type: 'error', message: event.message };
190
- return;
191
- }
192
- }
193
- if (resultBytes) {
194
- const elapsed = (performance.now() - start) / 1000;
195
- const id = await storeImage(brain, resultBytes, {
196
- prompt: params.prompt, style, size: sizeKey, steps, guidance,
197
- seed: resultSeed, width: resultWidth, height: resultHeight, elapsed,
198
- });
199
- yield {
200
- type: 'complete',
201
- images: [{
202
- id, prompt: params.prompt, style, size: sizeKey, steps, guidance,
203
- seed: resultSeed, width: resultWidth, height: resultHeight,
204
- elapsed, createdAt: Date.now(), filename: `${id}.png`,
205
- }],
206
- };
207
- }
208
- }
209
- else {
210
- yield { type: 'progress', step: 0, total: steps };
211
- const start = performance.now();
212
- const result = await gpu.generate({ prompt: fullPrompt, width, height, steps, guidance, seed }, ctx.user.id);
213
- const elapsed = (performance.now() - start) / 1000;
214
- const id = await storeImage(brain, result.bytes, {
215
- prompt: params.prompt, style, size: sizeKey, steps, guidance,
216
- seed: result.seed, width: result.width, height: result.height, elapsed,
217
- });
218
- yield {
219
- type: 'complete',
220
- images: [{
221
- id, prompt: params.prompt, style, size: sizeKey, steps, guidance,
222
- seed: result.seed, width: result.width, height: result.height,
223
- elapsed, createdAt: Date.now(), filename: `${id}.png`,
224
- }],
225
- };
226
- }
227
- },
228
128
  async list(options, ctx) {
229
- const { brain } = ctx;
230
129
  const limit = options?.limit ?? 50;
231
- // Query document nouns with imagineGeneration flag — excludes VFS entries
232
- const where = {
233
- noun: GEN_NOUN_TYPE,
234
- [`metadata.${GEN_FLAG}`]: true,
130
+ const findOpts = {
131
+ where: { noun: NOUN_TYPE },
132
+ excludeVFS: true,
133
+ limit,
235
134
  };
236
- const results = options?.query
237
- ? await brain.find({ query: options.query, where, limit })
238
- : await brain.find({ where, limit });
239
- return results.map(toImageMeta);
135
+ if (options?.query)
136
+ findOpts.query = options.query;
137
+ return (await ctx.brain.find(findOpts)).map(toImageMeta);
240
138
  },
241
139
  async get(imageId, ctx) {
242
140
  const entity = await ctx.brain.get(imageId);
@@ -263,22 +161,17 @@ export function createImagineHandler(options) {
263
161
  const entity = await ctx.brain.get(imageId);
264
162
  const vfsPath = entity?.metadata?.vfsPath ?? `${IMAGES_VFS_PATH}/${imageId}.png`;
265
163
  await ctx.brain.delete(imageId);
266
- try {
267
- await ctx.brain.vfs.unlink(vfsPath);
268
- }
269
- catch {
270
- // VFS file may already be gone
271
- }
164
+ await ctx.brain.vfs.unlink(vfsPath).catch(() => { });
272
165
  },
273
166
  async getPresets() {
274
- const gpu = requireBackend();
167
+ const g = gpu();
275
168
  return {
276
- styles: gpu.getStylePresets().map(({ key, label, description }) => ({ key, label, description })),
277
- sizes: gpu.getSizePresets(),
169
+ styles: g.getStylePresets().map(({ key, label, description }) => ({ key, label, description })),
170
+ sizes: g.getSizePresets(),
278
171
  };
279
172
  },
280
173
  async health() {
281
- return requireBackend().health();
174
+ return gpu().health();
282
175
  },
283
176
  };
284
177
  }
@@ -1 +1 @@
1
- {"version":3,"file":"imagine.js","sourceRoot":"","sources":["../../../src/server/handlers/imagine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"imagine.js","sourceRoot":"","sources":["../../../src/server/handlers/imagine.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soulcraft/sdk",
3
- "version": "3.4.0",
3
+ "version": "3.5.0",
4
4
  "description": "The unified Soulcraft platform SDK — data, auth, AI, billing, and notifications",
5
5
  "type": "module",
6
6
  "publishConfig": {