@jami-studio/core 0.92.27 → 0.92.28

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 (56) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/core/CHANGELOG.md +17 -0
  3. package/corpus/core/package.json +2 -1
  4. package/corpus/core/src/deploy/build.ts +56 -2
  5. package/corpus/core/src/event-bus/bus.ts +138 -140
  6. package/corpus/core/src/event-bus/registry.ts +81 -79
  7. package/corpus/core/src/file-upload/registry.ts +135 -125
  8. package/corpus/core/src/notifications/registry.ts +218 -216
  9. package/corpus/core/src/private-blob/registry.ts +246 -242
  10. package/corpus/core/src/secrets/register.ts +132 -129
  11. package/corpus/core/src/shared/global-scope.ts +75 -0
  12. package/corpus/core/src/sharing/registry.ts +193 -194
  13. package/corpus/core/src/tracking/providers.ts +425 -422
  14. package/corpus/core/src/tracking/registry.ts +102 -102
  15. package/dist/collab/routes.d.ts +1 -1
  16. package/dist/deploy/build.d.ts +23 -0
  17. package/dist/deploy/build.d.ts.map +1 -1
  18. package/dist/deploy/build.js +36 -2
  19. package/dist/deploy/build.js.map +1 -1
  20. package/dist/event-bus/bus.d.ts.map +1 -1
  21. package/dist/event-bus/bus.js +8 -6
  22. package/dist/event-bus/bus.js.map +1 -1
  23. package/dist/event-bus/registry.d.ts.map +1 -1
  24. package/dist/event-bus/registry.js +10 -6
  25. package/dist/event-bus/registry.js.map +1 -1
  26. package/dist/file-upload/actions/upload-image.d.ts +1 -1
  27. package/dist/file-upload/registry.d.ts.map +1 -1
  28. package/dist/file-upload/registry.js +28 -8
  29. package/dist/file-upload/registry.js.map +1 -1
  30. package/dist/notifications/registry.d.ts.map +1 -1
  31. package/dist/notifications/registry.js +6 -5
  32. package/dist/notifications/registry.js.map +1 -1
  33. package/dist/observability/routes.d.ts +5 -5
  34. package/dist/private-blob/registry.d.ts.map +1 -1
  35. package/dist/private-blob/registry.js +18 -13
  36. package/dist/private-blob/registry.js.map +1 -1
  37. package/dist/progress/routes.d.ts +1 -1
  38. package/dist/resources/handlers.d.ts +2 -2
  39. package/dist/secrets/register.d.ts.map +1 -1
  40. package/dist/secrets/register.js +11 -7
  41. package/dist/secrets/register.js.map +1 -1
  42. package/dist/secrets/routes.d.ts +9 -9
  43. package/dist/shared/global-scope.d.ts +55 -0
  44. package/dist/shared/global-scope.d.ts.map +1 -0
  45. package/dist/shared/global-scope.js +70 -0
  46. package/dist/shared/global-scope.js.map +1 -0
  47. package/dist/sharing/registry.d.ts.map +1 -1
  48. package/dist/sharing/registry.js +2 -16
  49. package/dist/sharing/registry.js.map +1 -1
  50. package/dist/tracking/providers.d.ts.map +1 -1
  51. package/dist/tracking/providers.js +11 -9
  52. package/dist/tracking/providers.js.map +1 -1
  53. package/dist/tracking/registry.d.ts.map +1 -1
  54. package/dist/tracking/registry.js +5 -5
  55. package/dist/tracking/registry.js.map +1 -1
  56. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tracking/registry.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TrackingProvider, TrackingEvent } from \"./types.js\";\r\n\r\nconst REGISTRY_KEY = Symbol.for(\"@agent-native/core/tracking.registry\");\r\ninterface GlobalWithRegistry {\r\n [REGISTRY_KEY]?: Map<string, TrackingProvider>;\r\n}\r\n\r\nfunction getRegistry(): Map<string, TrackingProvider> {\r\n const g = globalThis as unknown as GlobalWithRegistry;\r\n if (!g[REGISTRY_KEY]) g[REGISTRY_KEY] = new Map();\r\n return g[REGISTRY_KEY];\r\n}\r\n\r\nexport function registerTrackingProvider(provider: TrackingProvider): void {\r\n if (!provider?.name) {\r\n throw new Error(\"registerTrackingProvider: provider.name is required\");\r\n }\r\n if (typeof provider.track !== \"function\") {\r\n throw new Error(\r\n \"registerTrackingProvider: provider.track must be a function\",\r\n );\r\n }\r\n getRegistry().set(provider.name, provider);\r\n}\r\n\r\nexport function unregisterTrackingProvider(name: string): boolean {\r\n return getRegistry().delete(name);\r\n}\r\n\r\nexport function listTrackingProviders(): string[] {\r\n return Array.from(getRegistry().keys());\r\n}\r\n\r\nexport function track(\r\n name: string,\r\n properties?: Record<string, unknown>,\r\n meta?: { userId?: string },\r\n): void {\r\n const event: TrackingEvent = {\r\n name,\r\n properties,\r\n timestamp: new Date().toISOString(),\r\n userId: meta?.userId,\r\n };\r\n\r\n for (const provider of getRegistry().values()) {\r\n try {\r\n const result = provider.track(event);\r\n if (result && typeof (result as Promise<void>).catch === \"function\") {\r\n (result as Promise<void>).catch((err) => {\r\n console.error(\r\n `[tracking] Provider \"${provider.name}\" rejected:`,\r\n err,\r\n );\r\n });\r\n }\r\n } catch (err) {\r\n console.error(`[tracking] Provider \"${provider.name}\" threw:`, err);\r\n }\r\n }\r\n}\r\n\r\nexport function identify(\r\n userId: string,\r\n traits?: Record<string, unknown>,\r\n): void {\r\n for (const provider of getRegistry().values()) {\r\n if (!provider.identify) continue;\r\n try {\r\n const result = provider.identify(userId, traits);\r\n if (result && typeof (result as Promise<void>).catch === \"function\") {\r\n (result as Promise<void>).catch(() => {});\r\n }\r\n } catch {\r\n // best-effort\r\n }\r\n }\r\n}\r\n\r\nexport function flushTracking(): Promise<void[]> {\r\n const promises: Promise<void>[] = [];\r\n for (const provider of getRegistry().values()) {\r\n if (!provider.flush) continue;\r\n try {\r\n const result = provider.flush();\r\n if (result) {\r\n promises.push(\r\n result.catch((err) => {\r\n console.error(\r\n `[tracking] Provider \"${provider.name}\" flush rejected:`,\r\n err,\r\n );\r\n }),\r\n );\r\n }\r\n } catch (err) {\r\n console.error(`[tracking] Provider \"${provider.name}\" flush threw:`, err);\r\n // best-effort\r\n }\r\n }\r\n return Promise.all(promises);\r\n}\r\n"]}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tracking/registry.ts"],"names":[],"mappings":"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","sourcesContent":["import { getScopedGlobal } from \"../shared/global-scope.js\";\nimport type { TrackingProvider, TrackingEvent } from \"./types.js\";\n\n// globalThis-pinned so one app's ESM graphs share one provider registry, but\n// scope-aware + lazily resolved so unified workspace deployments (all apps in\n// one isolate) keep per-app tracking providers. See shared/global-scope.\nfunction getRegistry(): Map<string, TrackingProvider> {\n return getScopedGlobal(\n \"agent-native.tracking.registry\",\n () => new Map<string, TrackingProvider>(),\n );\n}\n\nexport function registerTrackingProvider(provider: TrackingProvider): void {\n if (!provider?.name) {\n throw new Error(\"registerTrackingProvider: provider.name is required\");\n }\n if (typeof provider.track !== \"function\") {\n throw new Error(\n \"registerTrackingProvider: provider.track must be a function\",\n );\n }\n getRegistry().set(provider.name, provider);\n}\n\nexport function unregisterTrackingProvider(name: string): boolean {\n return getRegistry().delete(name);\n}\n\nexport function listTrackingProviders(): string[] {\n return Array.from(getRegistry().keys());\n}\n\nexport function track(\n name: string,\n properties?: Record<string, unknown>,\n meta?: { userId?: string },\n): void {\n const event: TrackingEvent = {\n name,\n properties,\n timestamp: new Date().toISOString(),\n userId: meta?.userId,\n };\n\n for (const provider of getRegistry().values()) {\n try {\n const result = provider.track(event);\n if (result && typeof (result as Promise<void>).catch === \"function\") {\n (result as Promise<void>).catch((err) => {\n console.error(\n `[tracking] Provider \"${provider.name}\" rejected:`,\n err,\n );\n });\n }\n } catch (err) {\n console.error(`[tracking] Provider \"${provider.name}\" threw:`, err);\n }\n }\n}\n\nexport function identify(\n userId: string,\n traits?: Record<string, unknown>,\n): void {\n for (const provider of getRegistry().values()) {\n if (!provider.identify) continue;\n try {\n const result = provider.identify(userId, traits);\n if (result && typeof (result as Promise<void>).catch === \"function\") {\n (result as Promise<void>).catch(() => {});\n }\n } catch {\n // best-effort\n }\n }\n}\n\nexport function flushTracking(): Promise<void[]> {\n const promises: Promise<void>[] = [];\n for (const provider of getRegistry().values()) {\n if (!provider.flush) continue;\n try {\n const result = provider.flush();\n if (result) {\n promises.push(\n result.catch((err) => {\n console.error(\n `[tracking] Provider \"${provider.name}\" flush rejected:`,\n err,\n );\n }),\n );\n }\n } catch (err) {\n console.error(`[tracking] Provider \"${provider.name}\" flush threw:`, err);\n // best-effort\n }\n }\n return Promise.all(promises);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jami-studio/core",
3
- "version": "0.92.27",
3
+ "version": "0.92.28",
4
4
  "description": "Framework for agent-native application development — where AI agents and UI share SQL state, actions, and context",
5
5
  "homepage": "https://github.com/studio-jami/jami-studio#readme",
6
6
  "bugs": {
@@ -97,6 +97,7 @@
97
97
  "./embedding/react": "./dist/embedding/react.js",
98
98
  "./onboarding": "./dist/onboarding/index.js",
99
99
  "./shared": "./dist/shared/index.js",
100
+ "./global-scope": "./dist/shared/global-scope.js",
100
101
  "./voice": "./dist/voice/index.js",
101
102
  "./scripts": "./dist/scripts/index.js",
102
103
  "./application-state": "./dist/application-state/index.js",