@ibgib/web-gib 0.0.28 → 0.0.30

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 (36) hide show
  1. package/dist/AUTO-GENERATED-version.d.mts +1 -1
  2. package/dist/AUTO-GENERATED-version.mjs +1 -1
  3. package/dist/app-bootstrap/bootstrap.d.mts +90 -0
  4. package/dist/app-bootstrap/bootstrap.d.mts.map +1 -0
  5. package/dist/app-bootstrap/bootstrap.mjs +404 -0
  6. package/dist/app-bootstrap/bootstrap.mjs.map +1 -0
  7. package/dist/app-bootstrap/init-orchestration.d.mts +75 -0
  8. package/dist/app-bootstrap/init-orchestration.d.mts.map +1 -0
  9. package/dist/app-bootstrap/init-orchestration.mjs +211 -0
  10. package/dist/app-bootstrap/init-orchestration.mjs.map +1 -0
  11. package/dist/app-bootstrap/types.d.mts +163 -0
  12. package/dist/app-bootstrap/types.d.mts.map +1 -0
  13. package/dist/app-bootstrap/types.mjs +15 -0
  14. package/dist/app-bootstrap/types.mjs.map +1 -0
  15. package/dist/constants.d.mts +10 -0
  16. package/dist/constants.d.mts.map +1 -1
  17. package/dist/constants.mjs +10 -0
  18. package/dist/constants.mjs.map +1 -1
  19. package/dist/helpers.d.mts +0 -7
  20. package/dist/helpers.d.mts.map +1 -1
  21. package/dist/helpers.mjs +0 -25
  22. package/dist/helpers.mjs.map +1 -1
  23. package/dist/index.d.mts +16 -1
  24. package/dist/index.d.mts.map +1 -1
  25. package/dist/index.mjs +15 -2
  26. package/dist/index.mjs.map +1 -1
  27. package/package.json +1 -1
  28. package/src/AUTO-GENERATED-version.mts +1 -1
  29. package/src/app-bootstrap/bootstrap.mts +570 -0
  30. package/src/app-bootstrap/init-orchestration.mts +244 -0
  31. package/src/app-bootstrap/types.mts +190 -0
  32. package/src/constants.mts +10 -0
  33. package/src/helpers.mts +1 -23
  34. package/src/index.mts +28 -2
  35. package/tools/auto-generated-agent-skills/skills/ibgib-create-app-core/SKILL.md +7 -7
  36. package/tools/auto-generated-agent-skills/skills/ibgib-create-app-core/templates/types.mts.template +0 -3
@@ -10,5 +10,5 @@
10
10
  /**
11
11
  * this is the version of this package, auto-updated in the build process
12
12
  */
13
- export declare const AUTO_GENERATED_VERSION = "0.0.28";
13
+ export declare const AUTO_GENERATED_VERSION = "0.0.30";
14
14
  //# sourceMappingURL=AUTO-GENERATED-version.d.mts.map
@@ -10,5 +10,5 @@
10
10
  /**
11
11
  * this is the version of this package, auto-updated in the build process
12
12
  */
13
- export const AUTO_GENERATED_VERSION = '0.0.28';
13
+ export const AUTO_GENERATED_VERSION = '0.0.30';
14
14
  //# sourceMappingURL=AUTO-GENERATED-version.mjs.map
@@ -0,0 +1,90 @@
1
+ /**
2
+ * @module bootstrap
3
+ *
4
+ * Shared bootstrap entry point for ibgib-based web apps.
5
+ * Collapses the metaspace, globalThis, and shell-init boilerplate.
6
+ */
7
+ import { RCLIArgInfo, RCLIParamInfo } from "@ibgib/helper-gib/dist/rcli/rcli-types.mjs";
8
+ import { TransformResult } from "@ibgib/ts-gib/dist/types.mjs";
9
+ import { AppBase_V1 } from "@ibgib/core-gib/dist/witness/app/app-base-v1.mjs";
10
+ import { MetaspaceService } from "@ibgib/core-gib/dist/witness/space/metaspace/metaspace-types.mjs";
11
+ import { IbGibSpaceAny } from "@ibgib/core-gib/dist/witness/space/space-base-v1.mjs";
12
+ import { IbGibAmbientContextConfig, IbGibGlobalThis_IbGibApp, IbGibIdentityContext, RequestCommentIbGib_V1 } from "./types.mjs";
13
+ export interface TagConfig {
14
+ text: string;
15
+ icon: string;
16
+ description: string;
17
+ }
18
+ export interface BootstrapIbGibAppOptions<TApp extends AppBase_V1<any, any, any, any, any, any, any, any>> {
19
+ /** Application context configuration (IndexedDB names, etc.) */
20
+ config: IbGibAmbientContextConfig;
21
+ /** Accessor for the application's typed globalThis slot */
22
+ getGlobalThis: (config?: IbGibAmbientContextConfig) => IbGibGlobalThis_IbGibApp;
23
+ /** The main application witness class */
24
+ AppClass: new (data?: any, rel8ns?: any) => TApp;
25
+ /**
26
+ * Default data used when generating the very first version of this app.
27
+ * Only applied if `fnGetOrCreateApp` is omitted.
28
+ */
29
+ defaultAppData: any;
30
+ /**
31
+ * Optional. Provide an array of parameters the application supports.
32
+ */
33
+ paramInfos?: RCLIParamInfo[];
34
+ /**
35
+ * Optional. Provide initial args for bootstrap.
36
+ * Defaults to `['--interactive']`.
37
+ */
38
+ getOpeningArgs?: () => Promise<string[]>;
39
+ /**
40
+ * Optional. RCLI argument validation hook.
41
+ */
42
+ validateArgInfos?: (opts: {
43
+ argInfos: RCLIArgInfo[];
44
+ }) => string | undefined;
45
+ /**
46
+ * Optional. Hook called before initializing the app, but after metaspace is ready.
47
+ * Can be used to check environment, space state, etc.
48
+ */
49
+ onBeforeCreate?: (metaspace: MetaspaceService, space: IbGibSpaceAny) => Promise<void>;
50
+ /**
51
+ * Optional. Hook called immediately after the application witness is loaded or created.
52
+ * A good place to execute migrations before returning the 'ready' app.
53
+ */
54
+ onAppLoaded?: (app: TApp, isNew: boolean) => Promise<TApp>;
55
+ /**
56
+ * Nuclear escape hatch. Provide this to replace the entire app get-or-create flow.
57
+ * If provided, `onBeforeCreate`, `onAppLoaded`, and `defaultAppData` are ignored.
58
+ */
59
+ fnGetOrCreateApp?: (metaspace: MetaspaceService, space: IbGibSpaceAny) => Promise<TApp>;
60
+ /**
61
+ * Optional. Hook called to initialize identity context (e.g., keystone based auth).
62
+ */
63
+ resolveIdentity?: (metaspace: MetaspaceService) => Promise<IbGibIdentityContext | undefined>;
64
+ /**
65
+ * Optional. The point at which the application logic dictates its readiness to UI components.
66
+ * Typically this executes `getAppShellSvc().onEngineReady()`.
67
+ */
68
+ onReady?: (app: TApp) => void | Promise<void>;
69
+ /**
70
+ * Tags verified to exist in the global user space at startup.
71
+ */
72
+ ensureTags?: TagConfig[];
73
+ /**
74
+ * The key prefix used for allocating new spaces (e.g. `test_app_space`).
75
+ */
76
+ localSpaceNamePrefix?: string;
77
+ /**
78
+ * Optional hook to register AI agent function tracking and deprecations.
79
+ */
80
+ registerAgentFunctionInfos?: () => void;
81
+ }
82
+ export declare function bootstrapIbGibApp<TApp extends AppBase_V1<any, any, any, any, any, any, any, any>>(opts: BootstrapIbGibAppOptions<TApp>): Promise<void>;
83
+ export declare function createRequestCommentIbGib_Common({ args, interpretedArgInfos, }: {
84
+ args: string[];
85
+ interpretedArgInfos: RCLIArgInfo[];
86
+ }): Promise<TransformResult<RequestCommentIbGib_V1>>;
87
+ export declare function validateParamInfos({ paramInfos }: {
88
+ paramInfos: RCLIParamInfo[];
89
+ }): string[];
90
+ //# sourceMappingURL=bootstrap.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.d.mts","sourceRoot":"","sources":["../../src/app-bootstrap/bootstrap.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,404 @@
1
+ /**
2
+ * @module bootstrap
3
+ *
4
+ * Shared bootstrap entry point for ibgib-based web apps.
5
+ * Collapses the metaspace, globalThis, and shell-init boilerplate.
6
+ */
7
+ import { clone, extractErrorMsg, getTimestamp, getUUID, pickRandom_Letters, } from "@ibgib/helper-gib/dist/helpers/utils-helper.mjs";
8
+ import { buildArgInfos } from "@ibgib/helper-gib/dist/rcli/rcli-helper.mjs";
9
+ import { getIbAndGib, getIbGibAddr } from "@ibgib/ts-gib/dist/helper.mjs";
10
+ import { Factory_V1 as factory } from "@ibgib/ts-gib/dist/V1/factory.mjs";
11
+ import { Rel8n } from "@ibgib/ts-gib/dist/V1/types.mjs";
12
+ import { getFromSpace } from "@ibgib/core-gib/dist/witness/space/space-helper.mjs";
13
+ import { createNewApp, getAppIb, getInfoFromAppIb } from "@ibgib/core-gib/dist/witness/app/app-helper.mjs";
14
+ import { APP_REL8N_NAME } from '@ibgib/core-gib/dist/witness/app/app-constants.mjs';
15
+ import { TAG_REL8N_NAME } from "@ibgib/core-gib/dist/common/tag/tag-constants.mjs";
16
+ import { SPACE_NAME_REGEXP } from "@ibgib/core-gib/dist/witness/space/space-constants.mjs";
17
+ import { SpecialIbGibType } from "@ibgib/core-gib/dist/common/other/other-types.mjs";
18
+ import { alertUser, promptForSecret, promptForText } from "../helpers.web.mjs";
19
+ import { Metaspace_Webspace } from "../witness/space/metaspace/metaspace-webspace/metaspace-webspace.mjs";
20
+ import { LiveProxyIbGib } from "../witness/live-proxy-ibgib/live-proxy-ibgib-one-file.mjs";
21
+ import { storageGet } from "../storage/storage-helpers.web.mjs";
22
+ import { getIbGibGlobalThis_IbGib } from "../helpers.mjs";
23
+ // ---------------------------------------------------------------------------
24
+ // Main Flow
25
+ // ---------------------------------------------------------------------------
26
+ export async function bootstrapIbGibApp(opts) {
27
+ const lc = `[${bootstrapIbGibApp.name}]`;
28
+ const logalot = true; // Use a general log flag or derive from config
29
+ try {
30
+ if (logalot) {
31
+ console.log(`${lc} starting...`);
32
+ }
33
+ const ibGibGlobalThis = opts.getGlobalThis(opts.config);
34
+ if (ibGibGlobalThis.bootstrapStarted) {
35
+ if (ibGibGlobalThis.bootstrapPromise) {
36
+ console.warn(`${lc} already bootstrapping — awaiting that promise.`);
37
+ }
38
+ else {
39
+ throw new Error(`(UNEXPECTED) bootstrapStarted but bootstrapPromise is falsy?`);
40
+ }
41
+ }
42
+ else {
43
+ ibGibGlobalThis.bootstrapStarted = true;
44
+ ibGibGlobalThis.bootstrapPromise = new Promise(async (resolve, reject) => {
45
+ try {
46
+ const args = opts.getOpeningArgs
47
+ ? await opts.getOpeningArgs()
48
+ : ['--interactive'];
49
+ const paramInfos = opts.paramInfos ?? [{ name: 'interactive', isFlag: true, argTypeName: 'boolean' }];
50
+ const paramInfosErrors = validateParamInfos({ paramInfos });
51
+ if (paramInfosErrors.length > 0) {
52
+ throw new Error(`(UNEXPECTED) invalid PARAM_INFOS: ${paramInfosErrors.join('|')}`);
53
+ }
54
+ const argInfos = buildArgInfos({ args, paramInfos, logalot });
55
+ if (opts.validateArgInfos) {
56
+ const validationErrors = opts.validateArgInfos({ argInfos });
57
+ if (validationErrors) {
58
+ throw new Error(`Arg validation errors: ${validationErrors}`);
59
+ }
60
+ }
61
+ await execFromArgs({ opts, args, argInfos, logalot });
62
+ resolve();
63
+ }
64
+ catch (error) {
65
+ reject(error);
66
+ }
67
+ });
68
+ }
69
+ await ibGibGlobalThis.bootstrapPromise;
70
+ // Execute onReady securely outside the promise resolution to prevent deadlock
71
+ // when getComponentInstance is used by shell service.
72
+ if (opts.onReady) {
73
+ // Re-fetch the loaded app wrapper dynamically
74
+ const getApp = () => ibGibGlobalThis.appInstance || null;
75
+ await opts.onReady(getApp());
76
+ }
77
+ }
78
+ catch (error) {
79
+ console.error(`${lc} ${extractErrorMsg(error)}`);
80
+ throw error;
81
+ }
82
+ finally {
83
+ if (logalot) {
84
+ console.log(`\n${lc} complete.`);
85
+ }
86
+ }
87
+ }
88
+ async function execFromArgs({ opts, args, argInfos, logalot, }) {
89
+ const lc = `[${execFromArgs.name}]`;
90
+ try {
91
+ if (logalot) {
92
+ console.log(`${lc} starting...`);
93
+ }
94
+ const metaspace = await initMetaspace({ opts, logalot });
95
+ const ibgibGlobalThis_core = getIbGibGlobalThis_IbGib();
96
+ ibgibGlobalThis_core.metaspace = metaspace;
97
+ const ibgibGlobalThis = opts.getGlobalThis(opts.config);
98
+ ibgibGlobalThis.metaspace = metaspace;
99
+ if (opts.ensureTags) {
100
+ await ensureTagsExist({ metaspace, tags: opts.ensureTags, logalot });
101
+ }
102
+ if (opts.registerAgentFunctionInfos) {
103
+ opts.registerAgentFunctionInfos();
104
+ }
105
+ const resRequestCommentIbGib = await createRequestCommentIbGib_Common({
106
+ args, interpretedArgInfos: argInfos,
107
+ });
108
+ await metaspace.persistTransformResult({ resTransform: resRequestCommentIbGib });
109
+ ibgibGlobalThis.initialCommentIbGib = resRequestCommentIbGib.newIbGib;
110
+ const proxy = new LiveProxyIbGib();
111
+ await proxy.initialized;
112
+ proxy.setWrappedIbGib({ ibGib: resRequestCommentIbGib.newIbGib });
113
+ ibgibGlobalThis.initialCommentIbGibProxy = proxy;
114
+ if (opts.resolveIdentity) {
115
+ ibgibGlobalThis.identity = await opts.resolveIdentity(metaspace);
116
+ }
117
+ await execInteractive({ opts, resRequestCommentIbGib, metaspace, logalot });
118
+ }
119
+ catch (error) {
120
+ console.error(`${lc} ${extractErrorMsg(error)}`);
121
+ throw error;
122
+ }
123
+ finally {
124
+ if (logalot) {
125
+ console.log(`\n${lc} complete.`);
126
+ }
127
+ }
128
+ }
129
+ async function initMetaspace({ opts, logalot }) {
130
+ const lc = `[${initMetaspace.name}]`;
131
+ try {
132
+ if (logalot) {
133
+ console.log(`${lc} starting...`);
134
+ }
135
+ let metaspace = new Metaspace_Webspace(/*cacheSvc*/ undefined);
136
+ const localSpaceNameKey = opts.localSpaceNamePrefix
137
+ ? `${opts.localSpaceNamePrefix}_local_space_name`
138
+ : `local_space_name`;
139
+ const existingLocalSpaceName = await storageGet({
140
+ dbName: opts.config.dbName,
141
+ storeName: opts.config.storeName,
142
+ key: localSpaceNameKey,
143
+ });
144
+ const prefix = opts.localSpaceNamePrefix ?? 'app_space';
145
+ const spaceName = existingLocalSpaceName
146
+ ? undefined
147
+ : await generateLocalSpaceName(prefix);
148
+ await metaspace.initialize({
149
+ spaceName,
150
+ metaspaceFactory: undefined,
151
+ getFnAlert: () => ({ title, msg }) => alertUser({ title, msg }),
152
+ getFnPrompt: () => ({ title, msg }) => promptForText({ title, msg, confirm: false }),
153
+ getFnPromptPassword: () => () => promptForSecret({ confirm: true }),
154
+ });
155
+ return metaspace;
156
+ }
157
+ catch (error) {
158
+ console.error(`${lc} ${extractErrorMsg(error)}`);
159
+ throw error;
160
+ }
161
+ finally {
162
+ if (logalot) {
163
+ console.log(`${lc} complete.`);
164
+ }
165
+ }
166
+ }
167
+ async function generateLocalSpaceName(prefix) {
168
+ const name = prefix + '_' + pickRandom_Letters({ count: 12 });
169
+ if (!SPACE_NAME_REGEXP.test(name)) {
170
+ throw new Error(`(UNEXPECTED) generated space name (${name}) failed regexp`);
171
+ }
172
+ return name;
173
+ }
174
+ async function execInteractive({ opts, resRequestCommentIbGib, metaspace, logalot }) {
175
+ const lc = `[${execInteractive.name}]`;
176
+ try {
177
+ if (logalot) {
178
+ console.log(`${lc} starting...`);
179
+ }
180
+ const localUserSpace = await metaspace.getLocalUserSpace({ lock: false });
181
+ if (!localUserSpace) {
182
+ throw new Error(`(UNEXPECTED) localUserSpace falsy?`);
183
+ }
184
+ const app = opts.fnGetOrCreateApp
185
+ ? await opts.fnGetOrCreateApp(metaspace, localUserSpace)
186
+ : await defaultGetOrCreateApp({
187
+ AppClass: opts.AppClass,
188
+ defaultAppData: opts.defaultAppData,
189
+ onBeforeCreate: opts.onBeforeCreate,
190
+ onAppLoaded: opts.onAppLoaded,
191
+ metaspace,
192
+ space: localUserSpace,
193
+ });
194
+ // Track the app so `onReady` can access it cleanly
195
+ const ibgibGlobalThis = opts.getGlobalThis(opts.config);
196
+ ibgibGlobalThis.appInstance = app;
197
+ app.metaspace = metaspace;
198
+ await app.witness(resRequestCommentIbGib.newIbGib);
199
+ }
200
+ catch (error) {
201
+ console.error(`${lc} ${extractErrorMsg(error)}`);
202
+ throw error;
203
+ }
204
+ finally {
205
+ if (logalot) {
206
+ console.log(`${lc} complete.`);
207
+ }
208
+ }
209
+ }
210
+ async function defaultGetOrCreateApp({ AppClass, defaultAppData, onBeforeCreate, onAppLoaded, metaspace, space, }) {
211
+ const lc = `[${defaultGetOrCreateApp.name}]`;
212
+ const logalot = true;
213
+ try {
214
+ if (logalot) {
215
+ console.log(`${lc} starting...`);
216
+ }
217
+ let appsIbGib = await metaspace.getSpecialIbGib({
218
+ type: SpecialIbGibType.apps,
219
+ initialize: false, lock: false, space,
220
+ });
221
+ if (!appsIbGib) {
222
+ throw new Error(`(UNEXPECTED) no apps index ibgib`);
223
+ }
224
+ if (!appsIbGib.rel8ns) {
225
+ throw new Error(`(UNEXPECTED) appsIbGib.rel8ns falsy`);
226
+ }
227
+ const appAddrs = (appsIbGib.rel8ns[APP_REL8N_NAME] ?? [])
228
+ .filter(addr => {
229
+ const { ib } = getIbAndGib({ ibGibAddr: addr });
230
+ return getInfoFromAppIb({ appIb: ib }).appClassname === AppClass.name;
231
+ });
232
+ let app;
233
+ let appAddr;
234
+ let isNew = false;
235
+ if (appAddrs.length === 0) {
236
+ isNew = true;
237
+ if (onBeforeCreate) {
238
+ await onBeforeCreate(metaspace, space);
239
+ }
240
+ app = await createAndSaveNewApp({ AppClass, defaultAppData, metaspace, space });
241
+ appAddr = getIbGibAddr({ ibGib: app });
242
+ }
243
+ else if (appAddrs.length === 1) {
244
+ appAddr = appAddrs[0];
245
+ }
246
+ else {
247
+ const list = appAddrs
248
+ .map(a => getIbAndGib({ ibGibAddr: a }).ib)
249
+ .map((ib, idx) => `\n${idx}) ${ib}`);
250
+ let idx;
251
+ let retry = false;
252
+ do {
253
+ const response = await promptForText({
254
+ title: 'Which App?',
255
+ msg: `${retry ? 'huh? ' : ''}Multiple apps found. Which one?${list}`,
256
+ });
257
+ const parsed = Number.parseInt(response);
258
+ retry = Number.isNaN(parsed) || parsed >= appAddrs.length;
259
+ if (!retry) {
260
+ idx = parsed;
261
+ }
262
+ } while (retry);
263
+ appAddr = appAddrs[idx];
264
+ }
265
+ const resGet = await getFromSpace({ addr: appAddr, space });
266
+ if (resGet.success && resGet.ibGibs?.length === 1) {
267
+ app = resGet.ibGibs[0];
268
+ }
269
+ else {
270
+ throw new Error(`Couldn't get app (${appAddr}).`);
271
+ }
272
+ if (!app.witness) {
273
+ const witness = new AppClass(undefined, undefined);
274
+ await witness.loadIbGibDto(app);
275
+ app = witness;
276
+ }
277
+ if (onAppLoaded) {
278
+ app = await onAppLoaded(app, isNew);
279
+ }
280
+ return app;
281
+ }
282
+ catch (error) {
283
+ console.error(`${lc} ${extractErrorMsg(error)}`);
284
+ throw error;
285
+ }
286
+ finally {
287
+ if (logalot) {
288
+ console.log(`${lc} complete.`);
289
+ }
290
+ }
291
+ }
292
+ async function createAndSaveNewApp({ AppClass, defaultAppData, metaspace, space, }) {
293
+ const lc = `[${createAndSaveNewApp.name}]`;
294
+ const logalot = true;
295
+ try {
296
+ if (logalot) {
297
+ console.log(`${lc} starting...`);
298
+ }
299
+ const fnPromptApp = (() => {
300
+ return async () => {
301
+ const name = `${AppClass.name}_${pickRandom_Letters({ count: 8 })}`;
302
+ const data = clone(defaultAppData);
303
+ data.name = name;
304
+ data.uuid = await getUUID();
305
+ const rel8ns = undefined; // App templates usually have DEFAULT_APP_REL8NS as undefined
306
+ const { classname } = data;
307
+ const ib = getAppIb({ appData: data, classname });
308
+ return await factory.firstGen({
309
+ ib,
310
+ parentIbGib: factory.primitive({ ib: `app ${classname}` }),
311
+ data, rel8ns,
312
+ dna: true,
313
+ linkedRel8ns: [Rel8n.ancestor, Rel8n.past],
314
+ nCounter: true,
315
+ tjp: { timestamp: true },
316
+ });
317
+ };
318
+ })();
319
+ const app = await createNewApp({
320
+ fnPromptApp,
321
+ space,
322
+ ibgibs: metaspace,
323
+ });
324
+ if (!app) {
325
+ throw new Error(`Failed to create app (falsy).`);
326
+ }
327
+ if (app?.data?.classname !== AppClass.name) {
328
+ throw new Error(`(UNEXPECTED) wrong app classname.`);
329
+ }
330
+ return app;
331
+ }
332
+ catch (error) {
333
+ console.error(`${lc} ${extractErrorMsg(error)}`);
334
+ throw error;
335
+ }
336
+ finally {
337
+ if (logalot) {
338
+ console.log(`${lc} complete.`);
339
+ }
340
+ }
341
+ }
342
+ async function ensureTagsExist({ metaspace, tags, logalot }) {
343
+ const lc = `[${ensureTagsExist.name}]`;
344
+ try {
345
+ if (logalot) {
346
+ console.log(`${lc} starting...`);
347
+ }
348
+ const tagIbGibs = await metaspace.getSpecialRel8dIbGibs({
349
+ type: "tags", rel8nName: TAG_REL8N_NAME,
350
+ });
351
+ for (const tag of tags) {
352
+ if (!tagIbGibs.some(x => x.data?.text === tag.text)) {
353
+ await metaspace.createTagIbGib({
354
+ text: tag.text,
355
+ icon: tag.icon,
356
+ description: tag.description,
357
+ space: undefined,
358
+ });
359
+ }
360
+ }
361
+ }
362
+ catch (error) {
363
+ console.error(`${lc} ${extractErrorMsg(error)}`);
364
+ throw error;
365
+ }
366
+ finally {
367
+ if (logalot) {
368
+ console.log(`${lc} complete.`);
369
+ }
370
+ }
371
+ }
372
+ export async function createRequestCommentIbGib_Common({ args, interpretedArgInfos, }) {
373
+ const text = args.join(' ');
374
+ const data = {
375
+ uuid: await getUUID(),
376
+ text,
377
+ args,
378
+ interpretedArgInfos,
379
+ textTimestamp: getTimestamp(),
380
+ };
381
+ return await factory.firstGen({
382
+ parentIbGib: factory.primitive({ ib: 'comment' }),
383
+ ib: `comment ${text.substring(0, 32).replace(/ /g, '_')}`,
384
+ data,
385
+ dna: true,
386
+ tjp: { uuid: true, timestamp: true },
387
+ nCounter: true,
388
+ });
389
+ }
390
+ export function validateParamInfos({ paramInfos }) {
391
+ const errors = [];
392
+ const identifiers = [];
393
+ paramInfos.forEach(p => {
394
+ const names = [p.name, ...(p.synonyms ?? [])];
395
+ names.forEach(name => {
396
+ if (identifiers.includes(name.toLowerCase())) {
397
+ errors.push(`Duplicate identifier found: ${name}`);
398
+ }
399
+ identifiers.push(name.toLowerCase());
400
+ });
401
+ });
402
+ return errors;
403
+ }
404
+ //# sourceMappingURL=bootstrap.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.mjs","sourceRoot":"","sources":["../../src/app-bootstrap/bootstrap.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @module init-orchestration
3
+ *
4
+ * Shared web orchestration functions for booting ibgib-based frontend apps.
5
+ *
6
+ * ## what belongs here
7
+ *
8
+ * Functions that define the startup sequence and are identical across all
9
+ * ibgib apps. These depend only on the IbGibAmbientContextConfig seam.
10
+ * App-specific logic (typed globalThis accessors, component helpers) belongs
11
+ * in each app's own helpers.web.mts.
12
+ */
13
+ import { IbGibDynamicComponentMetaCtorOpts } from "../ui/component/component-types.mjs";
14
+ import { IbGibAmbientContextConfig, IbGibGlobalThis_Common, IbGibGlobalThis_IbGibApp } from "./types.mjs";
15
+ /**
16
+ * Initializes the IndexedDB stores required by an ibgib app.
17
+ *
18
+ * Call once on DOMContentLoaded, before the bootstrap script is dynamically
19
+ * loaded. This ensures storage is available when the metaspace initializes.
20
+ */
21
+ export declare function initIbGibStorage(config: IbGibAmbientContextConfig): Promise<void>;
22
+ /**
23
+ * Sets up globalThis.ibgib.[globalThisKey] for the given app config.
24
+ *
25
+ * Idempotent — safe to call multiple times. The root `globalThis.ibgib` object
26
+ * is created if it doesn't exist, then the per-app sub-key is populated.
27
+ *
28
+ * @param config The app's ambient context config.
29
+ * @param globalThisKey The snake_case key for this app's namespace under
30
+ * `globalThis.ibgib` (e.g. `'my_app'`, `'cool_new_thing'`).
31
+ * @param version Optional semver string (from AUTO_GENERATED_VERSION).
32
+ */
33
+ export declare function initIbGibGlobalThis(config: IbGibAmbientContextConfig, globalThisKey: string, version?: string): void;
34
+ /**
35
+ * Returns the raw IbGibGlobalThis_Common for the given key.
36
+ * Typed as the Common base — use the app-specific typed accessor for
37
+ * full-type access.
38
+ */
39
+ export declare function getIbGibGlobalThis_Common(globalThisKey: string): IbGibGlobalThis_Common;
40
+ /**
41
+ * Returns the IbGibGlobalThis_IbGibApp for the given key, initializing it
42
+ * from config if not yet present.
43
+ */
44
+ export declare function getIbGibGlobalThis_IbGibApp(globalThisKey: string, config?: IbGibAmbientContextConfig, version?: string): IbGibGlobalThis_IbGibApp;
45
+ /**
46
+ * Returns a function that retrieves the AI API key from storage at call time.
47
+ * The globalThisKey links back to the per-app namespace for DB/store/key names.
48
+ */
49
+ export declare function getDefaultFnGetAPIKey(globalThisKey: string): () => Promise<string>;
50
+ /**
51
+ * Dynamically imports the bootstrap module at the given path and calls the
52
+ * named export bootstrap function.
53
+ *
54
+ * Called after DOMContentLoaded so the heavy ibgib import graph does not block
55
+ * first paint.
56
+ *
57
+ * @param path Path to bootstrap.mjs (relative to the app's index.mts).
58
+ * @param bootstrapFnName The exported async function to call. Defaults to
59
+ * `'bootstrapApp'` — override with the app-specific function name
60
+ * (e.g. `'bootstrapMyAppApp'`).
61
+ */
62
+ export declare function dynamicallyLoadBootstrapScript(path: string, bootstrapFnName?: string): Promise<void>;
63
+ /**
64
+ * Returns the standard ctor options object for IbGib dynamic components.
65
+ *
66
+ * Provides two things components need at construction time:
67
+ * 1. `fnGetMetaspace` — accesses the global metaspace once initialized
68
+ * 2. `bootstrapPromise` — components can await this to defer their own init
69
+ * until the App witness and metaspace are fully ready
70
+ *
71
+ * @param globalThisKey The per-app namespace key used to find the bootstrap
72
+ * promise on globalThis.
73
+ */
74
+ export declare function getComponentCtorArg(globalThisKey: string): IbGibDynamicComponentMetaCtorOpts;
75
+ //# sourceMappingURL=init-orchestration.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-orchestration.d.mts","sourceRoot":"","sources":["../../src/app-bootstrap/init-orchestration.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AAExF,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAM1G;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAevF;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,yBAAyB,EACjC,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,MAAM,GACjB,IAAI,CAkCN;AAMD;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,sBAAsB,CAOvF;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACvC,aAAa,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,yBAAyB,EAClC,OAAO,CAAC,EAAE,MAAM,GACjB,wBAAwB,CAU1B;AAMD;;;GAGG;AACH,wBAAgB,qBAAqB,CACjC,aAAa,EAAE,MAAM,GACtB,MAAM,OAAO,CAAC,MAAM,CAAC,CASvB;AAMD;;;;;;;;;;;GAWG;AACH,wBAAsB,8BAA8B,CAChD,IAAI,EAAE,MAAM,EACZ,eAAe,GAAE,MAAuB,GACzC,OAAO,CAAC,IAAI,CAAC,CAgBf;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,iCAAiC,CA4B5F"}