@cldmv/slothlet 2.9.0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/AGENT-USAGE.md +41 -0
  2. package/README.md +95 -20
  3. package/dist/lib/engine/slothlet_child.mjs +1 -1
  4. package/dist/lib/engine/slothlet_engine.mjs +1 -1
  5. package/dist/lib/engine/slothlet_esm.mjs +1 -1
  6. package/dist/lib/engine/slothlet_helpers.mjs +1 -1
  7. package/dist/lib/engine/slothlet_worker.mjs +1 -1
  8. package/dist/lib/helpers/als-eventemitter.mjs +1 -1
  9. package/dist/lib/helpers/api_builder/add_api.mjs +321 -5
  10. package/dist/lib/helpers/api_builder/analysis.mjs +13 -3
  11. package/dist/lib/helpers/api_builder/construction.mjs +41 -3
  12. package/dist/lib/helpers/api_builder/decisions.mjs +16 -5
  13. package/dist/lib/helpers/api_builder/metadata.mjs +248 -0
  14. package/dist/lib/helpers/api_builder.mjs +1 -1
  15. package/dist/lib/helpers/auto-wrap.mjs +1 -1
  16. package/dist/lib/helpers/hooks.mjs +1 -1
  17. package/dist/lib/helpers/instance-manager.mjs +1 -1
  18. package/dist/lib/helpers/metadata-api.mjs +201 -0
  19. package/dist/lib/helpers/multidefault.mjs +12 -3
  20. package/dist/lib/helpers/resolve-from-caller.mjs +48 -11
  21. package/dist/lib/helpers/sanitize.mjs +1 -1
  22. package/dist/lib/helpers/utilities.mjs +1 -1
  23. package/dist/lib/modes/slothlet_eager.mjs +30 -2
  24. package/dist/lib/modes/slothlet_lazy.mjs +95 -5
  25. package/dist/lib/runtime/runtime-asynclocalstorage.mjs +5 -1
  26. package/dist/lib/runtime/runtime-livebindings.mjs +5 -1
  27. package/dist/lib/runtime/runtime.mjs +12 -1
  28. package/dist/slothlet.mjs +70 -6
  29. package/docs/API-RULES-CONDITIONS.md +511 -307
  30. package/docs/API-RULES.md +617 -589
  31. package/package.json +2 -2
  32. package/types/dist/lib/helpers/api_builder/add_api.d.mts +64 -22
  33. package/types/dist/lib/helpers/api_builder/add_api.d.mts.map +1 -1
  34. package/types/dist/lib/helpers/api_builder/analysis.d.mts.map +1 -1
  35. package/types/dist/lib/helpers/api_builder/construction.d.mts.map +1 -1
  36. package/types/dist/lib/helpers/api_builder/decisions.d.mts.map +1 -1
  37. package/types/dist/lib/helpers/api_builder/metadata.d.mts +99 -0
  38. package/types/dist/lib/helpers/api_builder/metadata.d.mts.map +1 -0
  39. package/types/dist/lib/helpers/metadata-api.d.mts +132 -0
  40. package/types/dist/lib/helpers/metadata-api.d.mts.map +1 -0
  41. package/types/dist/lib/helpers/multidefault.d.mts.map +1 -1
  42. package/types/dist/lib/helpers/resolve-from-caller.d.mts.map +1 -1
  43. package/types/dist/lib/modes/slothlet_eager.d.mts.map +1 -1
  44. package/types/dist/lib/modes/slothlet_lazy.d.mts.map +1 -1
  45. package/types/dist/lib/runtime/runtime-asynclocalstorage.d.mts +2 -0
  46. package/types/dist/lib/runtime/runtime-asynclocalstorage.d.mts.map +1 -1
  47. package/types/dist/lib/runtime/runtime-livebindings.d.mts +2 -0
  48. package/types/dist/lib/runtime/runtime-livebindings.d.mts.map +1 -1
  49. package/types/dist/lib/runtime/runtime.d.mts +1 -0
  50. package/types/dist/lib/runtime/runtime.d.mts.map +1 -1
  51. package/types/dist/slothlet.d.mts +8 -0
  52. package/types/dist/slothlet.d.mts.map +1 -1
  53. package/types/index.d.mts.map +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cldmv/slothlet",
3
- "version": "2.9.0",
3
+ "version": "2.11.0",
4
4
  "moduleVersions": {
5
5
  "lazy": "1.3.1",
6
6
  "eager": "1.3.1",
@@ -132,7 +132,7 @@
132
132
  "zero-dependencies"
133
133
  ],
134
134
  "engines": {
135
- "node": ">=16.4.0"
135
+ "node": ">=16.20.2"
136
136
  },
137
137
  "author": {
138
138
  "name": "Shinrai",
@@ -1,17 +1,24 @@
1
1
  /**
2
+ * @typedef {Object} AddApiFromFolderParams
3
+ * @property {string} apiPath - Dot-notation path where modules will be added
4
+ * @property {string} folderPath - Path to folder containing modules to load
5
+ * @property {object} instance - Slothlet instance with api, boundapi, config, modes, etc.
6
+ * @property {object} [metadata={}] - Metadata to attach to all loaded functions
7
+ * @property {object} [options={}] - Additional options for module loading
8
+ * @property {boolean} [options.forceOverwrite=false] - Allow overwriting existing APIs (requires Rule 12)
9
+ * @property {string} [options.moduleId] - Module identifier for ownership tracking (required with forceOverwrite)
10
+ */
11
+ /**
12
+ * @description
2
13
  * Dynamically adds API modules from a new folder to the existing API at a specified path.
3
14
  *
4
15
  * @function addApiFromFolder
5
16
  * @memberof module:@cldmv/slothlet.lib.helpers.api_builder.add_api
6
- * @param {object} options - Configuration object
7
- * @param {string} options.apiPath - Dot-notation path where modules will be added
8
- * @param {string} options.folderPath - Path to folder containing modules to load
9
- * @param {object} options.instance - Slothlet instance with api, boundapi, config, modes, etc.
17
+ * @param {AddApiFromFolderParams} params - Configuration object
10
18
  * @returns {Promise<void>}
11
19
  * @throws {Error} If API not loaded, invalid parameters, folder does not exist, or merge conflicts
12
20
  * @package
13
21
  *
14
- * @description
15
22
  * This function enables runtime extension of the API by loading modules from a folder
16
23
  * and merging them into a specified location in the API tree. It performs comprehensive
17
24
  * validation, supports both relative and absolute paths, handles intermediate object
@@ -30,31 +37,66 @@
30
37
  * import { addApiFromFolder } from "./add_api.mjs";
31
38
  *
32
39
  * // Add additional modules at runtime.plugins path
33
- * await addApiFromFolder({
34
- * apiPath: "runtime.plugins",
35
- * folderPath: "./plugins",
36
- * instance: slothletInstance
37
- * });
40
+ * await addApiFromFolder(
41
+ * "runtime.plugins",
42
+ * "./plugins",
43
+ * slothletInstance
44
+ * );
38
45
  *
39
46
  * @example
40
47
  * // Add modules to root level
41
- * await addApiFromFolder({
42
- * apiPath: "utilities",
43
- * folderPath: "./utils",
44
- * instance: slothletInstance
45
- * });
48
+ * await addApiFromFolder(
49
+ * "utilities",
50
+ * "./utils",
51
+ * slothletInstance
52
+ * );
46
53
  *
47
54
  * @example
48
55
  * // Add deep nested modules
49
- * await addApiFromFolder({
50
- * apiPath: "services.external.stripe",
51
- * folderPath: "./services/stripe",
52
- * instance: slothletInstance
53
- * });
56
+ * await addApiFromFolder(
57
+ * "services.external.stripe",
58
+ * "./services/stripe",
59
+ * slothletInstance
60
+ * );
61
+ *
62
+ * @example
63
+ * // Add modules with metadata
64
+ * await addApiFromFolder(
65
+ * "extensions.untrusted",
66
+ * "./untrusted-plugins",
67
+ * slothletInstance,
68
+ * {
69
+ * trusted: false,
70
+ * permissions: ["read"],
71
+ * version: "1.0.0",
72
+ * author: "external"
73
+ * }
74
+ * );
54
75
  */
55
- export function addApiFromFolder({ apiPath, folderPath, instance }: {
76
+ export function addApiFromFolder({ apiPath, folderPath, instance, metadata, options }: AddApiFromFolderParams): Promise<void>;
77
+ export type AddApiFromFolderParams = {
78
+ /**
79
+ * - Dot-notation path where modules will be added
80
+ */
56
81
  apiPath: string;
82
+ /**
83
+ * - Path to folder containing modules to load
84
+ */
57
85
  folderPath: string;
86
+ /**
87
+ * - Slothlet instance with api, boundapi, config, modes, etc.
88
+ */
58
89
  instance: object;
59
- }): Promise<void>;
90
+ /**
91
+ * - Metadata to attach to all loaded functions
92
+ */
93
+ metadata?: object;
94
+ /**
95
+ * - Additional options for module loading
96
+ */
97
+ options?: {
98
+ forceOverwrite?: boolean;
99
+ moduleId?: string;
100
+ };
101
+ };
60
102
  //# sourceMappingURL=add_api.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"add_api.d.mts","sourceRoot":"","sources":["../../../../../dist/lib/helpers/api_builder/add_api.mjs"],"names":[],"mappings":"AAiDA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,oEAhDG;IAAwB,OAAO,EAAvB,MAAM;IACU,UAAU,EAA1B,MAAM;IACU,QAAQ,EAAxB,MAAM;CACd,GAAU,OAAO,CAAC,IAAI,CAAC,CAgQzB"}
1
+ {"version":3,"file":"add_api.d.mts","sourceRoot":"","sources":["../../../../../dist/lib/helpers/api_builder/add_api.mjs"],"names":[],"mappings":"AAkDA;;;;;;;;;GASG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,uFA3DW,sBAAsB,GACpB,OAAO,CAAC,IAAI,CAAC,CAskBzB;;;;;aAtlBa,MAAM;;;;gBACN,MAAM;;;;cACN,MAAM;;;;eACN,MAAM;;;;cAEjB;QAA6B,cAAc,GAAhC,OAAO;QACU,QAAQ,GAAzB,MAAM;KACnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"analysis.d.mts","sourceRoot":"","sources":["../../../../../dist/lib/helpers/api_builder/analysis.mjs"],"names":[],"mappings":"AA0CA;;;;;;;;GAQG;AACH,0CAHW,GAAC,GACC,OAAO,CAcnB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,0CAvBW,MAAM,YAEd;IAA0B,KAAK,GAAvB,OAAO;IACU,QAAQ,GAAzB,MAAM;CACd,GAAU,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9B,iBAAiB,EAAE,UAAU,GAAC,QAAQ,GAAC,IAAI,CAAC;IAC5C,oBAAoB,EAAE,OAAO,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAC,CAkGJ;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,oDAZW,MAAM,YAEd;IAAyB,QAAQ,GAAzB,MAAM;IACY,KAAK,GAAvB,OAAO;CACf,GAAU,MAAM,CA4NlB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wDA1BW,MAAM,YAEd;IAAwB,QAAQ,EAAxB,MAAM;IACW,YAAY,GAA7B,MAAM;IACW,QAAQ,GAAzB,MAAM;IACY,KAAK,GAAvB,OAAO;CACf,GAAU,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,aAAa,GAAC,YAAY,GAAC,OAAO,CAAC;IACvD,eAAe,EAAE,MAAM,CAAA;CACxB,CAAC,CAkEJ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,2DA1BW,MAAM,YAEd;IAAwB,QAAQ,EAAxB,MAAM;IACW,YAAY,GAA7B,MAAM;IACW,QAAQ,GAAzB,MAAM;IACY,KAAK,GAAvB,OAAO;CACf,GAAU,OAAO,CAAC;IAChB,kBAAkB,EAAE,aAAa,GAAC,YAAY,GAAC,OAAO,CAAC;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,OAAO,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,GAAG,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IACnH,cAAc,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IAC3E,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yBAAyB,EAAE;QAAC,aAAa,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAAA;CACxE,CAAC,CAmHJ"}
1
+ {"version":3,"file":"analysis.d.mts","sourceRoot":"","sources":["../../../../../dist/lib/helpers/api_builder/analysis.mjs"],"names":[],"mappings":"AA0CA;;;;;;;;GAQG;AACH,0CAHW,GAAC,GACC,OAAO,CAcnB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,0CAvBW,MAAM,YAEd;IAA0B,KAAK,GAAvB,OAAO;IACU,QAAQ,GAAzB,MAAM;CACd,GAAU,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9B,iBAAiB,EAAE,UAAU,GAAC,QAAQ,GAAC,IAAI,CAAC;IAC5C,oBAAoB,EAAE,OAAO,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAC,CA4GJ;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,oDAZW,MAAM,YAEd;IAAyB,QAAQ,GAAzB,MAAM;IACY,KAAK,GAAvB,OAAO;CACf,GAAU,MAAM,CA4NlB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wDA1BW,MAAM,YAEd;IAAwB,QAAQ,EAAxB,MAAM;IACW,YAAY,GAA7B,MAAM;IACW,QAAQ,GAAzB,MAAM;IACY,KAAK,GAAvB,OAAO;CACf,GAAU,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,aAAa,GAAC,YAAY,GAAC,OAAO,CAAC;IACvD,eAAe,EAAE,MAAM,CAAA;CACxB,CAAC,CAkEJ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,2DA1BW,MAAM,YAEd;IAAwB,QAAQ,EAAxB,MAAM;IACW,YAAY,GAA7B,MAAM;IACW,QAAQ,GAAzB,MAAM;IACY,KAAK,GAAvB,OAAO;CACf,GAAU,OAAO,CAAC;IAChB,kBAAkB,EAAE,aAAa,GAAC,YAAY,GAAC,OAAO,CAAC;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,OAAO,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,GAAG,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IACnH,cAAc,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IAC3E,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yBAAyB,EAAE;QAAC,aAAa,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAAA;CACxE,CAAC,CAmHJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"construction.d.mts","sourceRoot":"","sources":["../../../../../dist/lib/helpers/api_builder/construction.mjs"],"names":[],"mappings":"AA0CA;;;;;;;;;;;;;;GAcG;AACH,mCARW,MAAM,mBACN,MAAM,GACJ,MAAM,CAQlB;AAED;;;;;;;;;;;;;GAaG;AACH,yCAPW,MAAM,GACJ,OAAO,CAgBnB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qDAzBW,MAAM,YAEd;IAAyB,YAAY,GAA7B,MAAM;IACW,QAAQ,GAAzB,MAAM;IACW,IAAI,GAArB,MAAM;IACa,aAAa;IAChB,QAAQ,EAAxB,MAAM;CACd,GAAU,OAAO,CAAC,MAAM,CAAC,CAkT3B;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,kCAtBW,MAAM,YAEd;IAA0B,IAAI,GAAtB,OAAO;IACU,QAAQ,GAAzB,MAAM;IACU,QAAQ,EAAxB,MAAM;CACd,GAAU,OAAO,CAAC,MAAM,WAAS,CAAC,CA2HpC"}
1
+ {"version":3,"file":"construction.d.mts","sourceRoot":"","sources":["../../../../../dist/lib/helpers/api_builder/construction.mjs"],"names":[],"mappings":"AA0CA;;;;;;;;;;;;;;GAcG;AACH,mCARW,MAAM,mBACN,MAAM,GACJ,MAAM,CAQlB;AAED;;;;;;;;;;;;;GAaG;AACH,yCAPW,MAAM,GACJ,OAAO,CAgBnB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qDAzBW,MAAM,YAEd;IAAyB,YAAY,GAA7B,MAAM;IACW,QAAQ,GAAzB,MAAM;IACW,IAAI,GAArB,MAAM;IACa,aAAa;IAChB,QAAQ,EAAxB,MAAM;CACd,GAAU,OAAO,CAAC,MAAM,CAAC,CA+U3B;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,kCAtBW,MAAM,YAEd;IAA0B,IAAI,GAAtB,OAAO;IACU,QAAQ,GAAzB,MAAM;IACU,QAAQ,EAAxB,MAAM;CACd,GAAU,OAAO,CAAC,MAAM,WAAS,CAAC,CAoIpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"decisions.d.mts","sourceRoot":"","sources":["../../../../../dist/lib/helpers/api_builder/decisions.mjs"],"names":[],"mappings":"AAwCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,+CAtCG;IAAwB,GAAG,EAAnB,MAAM;IACU,QAAQ,EAAxB,MAAM;IACU,UAAU,EAA1B,MAAM;IACW,yBAAyB,EAA1C,OAAO;IACU,iBAAiB,EAAlC,OAAO;IACW,gBAAgB,GAAlC,OAAO;IAGU,YAAY,GAA7B,MAAM;IACW,YAAY,GAA7B,MAAM;IACY,KAAK,GAAvB,OAAO;CACf,GAAU;IACR,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAA;CACf,CAyHH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qDAtBG;IAAwB,GAAG,EAAnB,MAAM;IACU,QAAQ,EAAxB,MAAM;IACU,UAAU,EAA1B,MAAM;IACU,eAAe,EAA/B,MAAM;IACY,YAAY;IACZ,KAAK,GAAvB,OAAO;CACf,GAAU;IAAC,gBAAgB,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAC,CA4D7D;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,6CAvCG;IAAwB,GAAG,EAAnB,MAAM;IACU,QAAQ,EAAxB,MAAM;IACU,UAAU,EAA1B,MAAM;IACW,yBAAyB,EAA1C,OAAO;IACU,iBAAiB,EAAlC,OAAO;IACS,GAAG,EAAnB,MAAM;IACa,cAAc;IACd,cAAc;IAChB,OAAO,GAChC;QAAkC,KAAK,GAA/B,OAAO;QACkB,IAAI,GAA7B,MAAM;QACmB,YAAY,GAArC,MAAM;QACmB,YAAY,GAArC,MAAM;KACd;CAAA,GAAU;IACR,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CACpC,CA2KH;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qDAzBW,MAAM,YAEd;IAAyB,YAAY,GAA7B,MAAM;IACW,QAAQ,GAAzB,MAAM;IACW,IAAI,GAArB,MAAM;IACa,aAAa;IAChB,QAAQ,EAAxB,MAAM;CACd,GAAU,OAAO,CAAC,MAAM,CAAC,CA2Z3B"}
1
+ {"version":3,"file":"decisions.d.mts","sourceRoot":"","sources":["../../../../../dist/lib/helpers/api_builder/decisions.mjs"],"names":[],"mappings":"AAwCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,+CAtCG;IAAwB,GAAG,EAAnB,MAAM;IACU,QAAQ,EAAxB,MAAM;IACU,UAAU,EAA1B,MAAM;IACW,yBAAyB,EAA1C,OAAO;IACU,iBAAiB,EAAlC,OAAO;IACW,gBAAgB,GAAlC,OAAO;IAGU,YAAY,GAA7B,MAAM;IACW,YAAY,GAA7B,MAAM;IACY,KAAK,GAAvB,OAAO;CACf,GAAU;IACR,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAA;CACf,CAyHH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qDAtBG;IAAwB,GAAG,EAAnB,MAAM;IACU,QAAQ,EAAxB,MAAM;IACU,UAAU,EAA1B,MAAM;IACU,eAAe,EAA/B,MAAM;IACY,YAAY;IACZ,KAAK,GAAvB,OAAO;CACf,GAAU;IAAC,gBAAgB,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAC,CA4D7D;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,6CAvCG;IAAwB,GAAG,EAAnB,MAAM;IACU,QAAQ,EAAxB,MAAM;IACU,UAAU,EAA1B,MAAM;IACW,yBAAyB,EAA1C,OAAO;IACU,iBAAiB,EAAlC,OAAO;IACS,GAAG,EAAnB,MAAM;IACa,cAAc;IACd,cAAc;IAChB,OAAO,GAChC;QAAkC,KAAK,GAA/B,OAAO;QACkB,IAAI,GAA7B,MAAM;QACmB,YAAY,GAArC,MAAM;QACmB,YAAY,GAArC,MAAM;KACd;CAAA,GAAU;IACR,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CACpC,CAsLH;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qDAzBW,MAAM,YAEd;IAAyB,YAAY,GAA7B,MAAM;IACW,QAAQ,GAAzB,MAAM;IACW,IAAI,GAArB,MAAM;IACa,aAAa;IAChB,QAAQ,EAAxB,MAAM;CACd,GAAU,OAAO,CAAC,MAAM,CAAC,CA2Z3B"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * @Project: @cldmv/slothlet
3
+ * @Filename: /src/lib/helpers/api_builder/metadata.mjs
4
+ * @Date: 2025-12-31 00:00:00 -08:00
5
+ * @Author: Nate Hyson <CLDMV>
6
+ * @Email: <Shinrai@users.noreply.github.com>
7
+ * -----
8
+ * @Last modified by: Nate Hyson <CLDMV> (Shinrai@users.noreply.github.com)
9
+ * @Last modified time: 2025-12-31 22:30:16 -08:00 (1767249016)
10
+ * -----
11
+ * @Copyright: Copyright (c) 2013-2025 Catalyzed Motivation Inc. All rights reserved.
12
+ */
13
+ /**
14
+ * @fileoverview Metadata management utilities for API functions.
15
+ * @module @cldmv/slothlet/lib/helpers/api_builder/metadata
16
+ * @memberof module:@cldmv/slothlet.lib.helpers.api_builder
17
+ * @internal
18
+ * @private
19
+ *
20
+ * @description
21
+ * Provides utilities for tagging functions with immutable metadata, cleaning stale metadata
22
+ * from cached modules, and creating immutable metadata objects with deep freezing.
23
+ *
24
+ * Key Features:
25
+ * - Immutable metadata with Proxy-based enforcement
26
+ * - Deep freezing of nested objects and arrays
27
+ * - Recursive traversal for tagging/cleaning object trees
28
+ * - CommonJS cache-aware metadata cleanup
29
+ */
30
+ /**
31
+ * Creates an immutable-but-extensible metadata proxy object.
32
+ *
33
+ * @function createImmutableMetadata
34
+ * @param {object} initial - Initial metadata properties
35
+ * @returns {object} Object with immutable existing properties but allows adding new ones
36
+ *
37
+ * @description
38
+ * Creates an object that enforces immutability of existing properties while allowing
39
+ * new properties to be added. This prevents tampering with security-critical metadata
40
+ * while allowing runtime extension of metadata for additional context.
41
+ *
42
+ * Security features:
43
+ * - Existing properties cannot be modified (non-writable, non-configurable after first set)
44
+ * - Properties cannot be deleted
45
+ * - New properties can be added, which then become immutable
46
+ *
47
+ * @example
48
+ * const meta = createImmutableMetadata({ trusted: true, version: "1.0" });
49
+ * meta.author = "Alice"; // OK - new property
50
+ * meta.author = "Bob"; // FAIL - cannot modify after setting
51
+ * meta.trusted = false; // FAIL - cannot modify existing property
52
+ * delete meta.version; // FAIL - cannot delete properties
53
+ */
54
+ export function createImmutableMetadata(initial?: object): object;
55
+ /**
56
+ * Removes metadata from all functions in an object tree.
57
+ *
58
+ * @function cleanMetadata
59
+ * @param {object|Function} obj - Object or function to clean
60
+ * @param {WeakSet} [visited] - Visited objects tracker to prevent infinite recursion
61
+ * @returns {void}
62
+ *
63
+ * @description
64
+ * Traverses an object/function tree and removes __metadata and __sourceFolder properties.
65
+ * This is needed when reloading CommonJS modules that cache function object references.
66
+ */
67
+ export function cleanMetadata(obj: object | Function, visited?: WeakSet<any>): void;
68
+ /**
69
+ * Recursively tags all functions in an object tree with metadata.
70
+ *
71
+ * @function tagLoadedFunctions
72
+ * @param {object|Function} obj - Object or function to tag
73
+ * @param {object} metadata - Metadata object to attach
74
+ * @param {string} baseDir - Base directory path for relative file tracking
75
+ * @param {WeakSet} [visited] - Visited objects tracker to prevent infinite recursion
76
+ * @returns {void}
77
+ *
78
+ * @description
79
+ * Traverses an object/function tree and attaches immutable metadata to all functions.
80
+ * Also tracks source file information (__sourceFile, __sourceLine) for stack trace
81
+ * matching. Only tags functions that don't already have metadata (non-overwriting).
82
+ *
83
+ * Attached properties:
84
+ * - __metadata: Immutable metadata proxy with all user-provided metadata
85
+ * - __sourceFolder: Absolute path to the folder the module was loaded from
86
+ * - __sourceFile: Absolute file path (for stack trace matching)
87
+ * - __sourceLine: Line number where function is defined (for stack trace matching)
88
+ *
89
+ * @example
90
+ * const modules = { math: { add: (a, b) => a + b } };
91
+ * tagLoadedFunctions(modules, {
92
+ * trusted: true,
93
+ * version: "1.0.0",
94
+ * author: "Alice"
95
+ * }, "/path/to/plugins");
96
+ * // Now modules.math.add.__metadata.trusted === true
97
+ */
98
+ export function tagLoadedFunctions(obj: object | Function, metadata: object, baseDir: string, visited?: WeakSet<any>): void;
99
+ //# sourceMappingURL=metadata.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.d.mts","sourceRoot":"","sources":["../../../../../dist/lib/helpers/api_builder/metadata.mjs"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,kDApBW,MAAM,GACJ,MAAM,CAmJlB;AAED;;;;;;;;;;;GAWG;AACH,mCARW,MAAM,WAAS,2BAEb,IAAI,CAyChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wCA1BW,MAAM,WAAS,YACf,MAAM,WACN,MAAM,2BAEJ,IAAI,CA+EhB"}
@@ -0,0 +1,132 @@
1
+ export namespace metadataAPI {
2
+ /**
3
+ * Get metadata of the function that called the current function.
4
+ *
5
+ * @function caller
6
+ * @memberof metadataAPI
7
+ * @returns {object|null} Caller's metadata object or null if not found
8
+ * @public
9
+ *
10
+ * @description
11
+ * Uses stack trace analysis to identify the calling function and retrieve
12
+ * its attached metadata. Useful for implementing access control where a
13
+ * function needs to verify the identity/permissions of its caller.
14
+ *
15
+ * Stack trace structure:
16
+ * - Line 0: Error
17
+ * - Line 1: metadataAPI.caller (this function)
18
+ * - Line 2: Current function (the one checking)
19
+ * - Line 3: The caller we want to identify
20
+ *
21
+ * @example
22
+ * // In a secure function
23
+ * import { metadataAPI } from "@cldmv/slothlet/runtime";
24
+ *
25
+ * export function getSecrets() {
26
+ * const caller = metadataAPI.caller();
27
+ *
28
+ * if (!caller?.trusted) {
29
+ * throw new Error("Access denied: untrusted caller");
30
+ * }
31
+ *
32
+ * if (!caller.permissions?.includes("read_secrets")) {
33
+ * throw new Error("Access denied: insufficient permissions");
34
+ * }
35
+ *
36
+ * return { apiKey: "secret123", token: "xyz" };
37
+ * }
38
+ *
39
+ * @example
40
+ * // With custom metadata tags
41
+ * const caller = metadataAPI.caller();
42
+ * console.log("Caller source:", caller?.sourceFolder);
43
+ * console.log("Caller version:", caller?.version);
44
+ * console.log("Caller author:", caller?.author);
45
+ */
46
+ function caller(): object | null;
47
+ /**
48
+ * Get metadata of the current function.
49
+ *
50
+ * @function self
51
+ * @memberof metadataAPI
52
+ * @returns {object|null} Current function's metadata or null if not found
53
+ * @public
54
+ *
55
+ * @description
56
+ * Retrieves metadata attached to the currently executing function. Useful
57
+ * for functions that need to inspect their own metadata (e.g., for logging,
58
+ * conditional behavior based on load source).
59
+ *
60
+ * Stack trace structure:
61
+ * - Line 0: Error
62
+ * - Line 1: metadataAPI.self (this function)
63
+ * - Line 2: Current function (the one we want to identify)
64
+ *
65
+ * @example
66
+ * // Function checking its own metadata
67
+ * import { metadataAPI } from "@cldmv/slothlet/runtime";
68
+ *
69
+ * export function smartFunction() {
70
+ * const meta = metadataAPI.self();
71
+ *
72
+ * if (meta?.environment === "development") {
73
+ * console.log("Running in development mode");
74
+ * }
75
+ *
76
+ * if (meta?.version) {
77
+ * console.log(`Function version: ${meta.version}`);
78
+ * }
79
+ *
80
+ * return "result";
81
+ * }
82
+ */
83
+ function self(): object | null;
84
+ /**
85
+ * Get metadata of any function by API path.
86
+ *
87
+ * @function get
88
+ * @memberof metadataAPI
89
+ * @param {string} path - Dot-notation API path (e.g., "math.add", "plugins.helper")
90
+ * @param {object} [apiRoot] - Optional API root object (uses runtime.self if not provided)
91
+ * @returns {object|null} Function's metadata or null if not found
92
+ * @public
93
+ *
94
+ * @description
95
+ * Retrieves metadata for any function in the API tree by its path. Useful
96
+ * for checking metadata of functions you have references to, or for
97
+ * administrative/introspection purposes.
98
+ *
99
+ * @example
100
+ * // Check metadata of a specific function
101
+ * import { metadataAPI } from "@cldmv/slothlet/runtime";
102
+ *
103
+ * export function checkPermissions() {
104
+ * const pluginMeta = metadataAPI.get("plugins.userPlugin");
105
+ *
106
+ * if (!pluginMeta) {
107
+ * throw new Error("Plugin not found or has no metadata");
108
+ * }
109
+ *
110
+ * if (pluginMeta.trusted) {
111
+ * console.log("Plugin is trusted");
112
+ * } else {
113
+ * console.log("Plugin is untrusted");
114
+ * }
115
+ * }
116
+ *
117
+ * @example
118
+ * // Iterate and check all plugins
119
+ * const pluginPaths = ["plugins.auth", "plugins.logger", "plugins.cache"];
120
+ * for (const path of pluginPaths) {
121
+ * const meta = metadataAPI.get(path);
122
+ * console.log(`${path}: ${meta?.version || "unknown"}`);
123
+ * }
124
+ *
125
+ * @example
126
+ * // From outside slothlet context, pass API root explicitly
127
+ * const api = await slothlet({ dir: "./modules" });
128
+ * const meta = await metadataAPI.get("plugins.helper", api);
129
+ */
130
+ function get(path: string, apiRoot?: object): object | null;
131
+ }
132
+ //# sourceMappingURL=metadata-api.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-api.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/metadata-api.mjs"],"names":[],"mappings":";IAmNC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2CG;IACH,mBAvCa,MAAM,GAAC,IAAI,CAgEvB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,iBA/Ba,MAAM,GAAC,IAAI,CAsDvB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;IACH,mBAzCW,MAAM,YACN,MAAM,GACJ,MAAM,GAAC,IAAI,CAsDvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"multidefault.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/multidefault.mjs"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,yDAlBW,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAAC,WACrB,MAAM,YAEd;IAA0B,KAAK,GAAvB,OAAO;IACe,QAAQ,GAA9B,MAAM,GAAC,IAAI;CACnB,GAAU,OAAO,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yBAAyB,EAAE,OAAO,CAAC;IACnC,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,kBAAkB,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC,CAAC,CAAA;CACjE,CAAC,CA8FJ;AAED;;;;;;;;GAQG;AACH,0DALW,MAAM,GACJ,OAAO,CAWnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,4DAvBG;IAAyB,yBAAyB,EAA1C,OAAO;IACU,gBAAgB,EAAjC,OAAO;IACU,iBAAiB,EAAlC,OAAO;IACgB,UAAU,EAAjC,KAAK,CAAC,MAAM,CAAC;IACG,UAAU,EAA1B,MAAM;IACU,gBAAgB,EAAhC,MAAM;IACY,KAAK,GAAvB,OAAO;CACf,GAAU;IACR,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAA;CACf,CA4FH"}
1
+ {"version":3,"file":"multidefault.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/multidefault.mjs"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,yDAlBW,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAAC,WACrB,MAAM,YAEd;IAA0B,KAAK,GAAvB,OAAO;IACe,QAAQ,GAA9B,MAAM,GAAC,IAAI;CACnB,GAAU,OAAO,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yBAAyB,EAAE,OAAO,CAAC;IACnC,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,kBAAkB,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC,CAAC,CAAA;CACjE,CAAC,CAuGJ;AAED;;;;;;;;GAQG;AACH,0DALW,MAAM,GACJ,OAAO,CAWnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,4DAvBG;IAAyB,yBAAyB,EAA1C,OAAO;IACU,gBAAgB,EAAjC,OAAO;IACU,iBAAiB,EAAlC,OAAO;IACgB,UAAU,EAAjC,KAAK,CAAC,MAAM,CAAC;IACG,UAAU,EAA1B,MAAM;IACU,gBAAgB,EAAhC,MAAM;IACY,KAAK,GAAvB,OAAO;CACf,GAAU;IACR,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAA;CACf,CA4FH"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-from-caller.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/resolve-from-caller.mjs"],"names":[],"mappings":"AAqFA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,6CAhCa,KAAK,CAAC,QAAQ,CAAC,CA0C3B;AAqKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,2CAzCW,MAAM,GACJ,MAAM,CAsDlB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,0CA1CW,MAAM,GACJ,MAAM,CAuDlB;AA/UM,4BAvBI,GAAG,GACD,MAAM,GAAC,IAAI,CAsB+F;;iBAmVzG,MAAY,MAAM,GAAC,SAAS;mBAC5B,MAAY,MAAM,GAAC,SAAS;qBAC5B,MAAY,MAAM,GAAC,SAAS;iBAC5B,MAAY,MAAM,GAAC,SAAS;mBAC5B,MAAY,MAAM,GAAC,SAAS;8BAC5B,MAAY,MAAM,GAAC,SAAS;qBAC5B,MAAY,MAAM,GAAC,SAAS;cAC5B,MAAY,OAAO,GAAC,SAAS;YAC7B,MAAY,OAAO,GAAC,SAAS;mBAC7B,MAAY,OAAO,GAAC,SAAS;gBAC7B,MAAY,OAAO,GAAC,SAAS;aAC7B,MAAY,OAAO,GAAC,SAAS;kBAC7B,MAAY,OAAO,GAAC,SAAS;qBAC7B,MAAY,MAAM,GAAC,SAAS"}
1
+ {"version":3,"file":"resolve-from-caller.d.mts","sourceRoot":"","sources":["../../../../dist/lib/helpers/resolve-from-caller.mjs"],"names":[],"mappings":"AAqFA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,6CAhCa,KAAK,CAAC,QAAQ,CAAC,CA0C3B;AAsPD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,2CAzCW,MAAM,GACJ,MAAM,CAsDlB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,0CA1CW,MAAM,GACJ,MAAM,CAuDlB;AAhaM,4BAvBI,GAAG,GACD,MAAM,GAAC,IAAI,CAsB+F;;iBAoazG,MAAY,MAAM,GAAC,SAAS;mBAC5B,MAAY,MAAM,GAAC,SAAS;qBAC5B,MAAY,MAAM,GAAC,SAAS;iBAC5B,MAAY,MAAM,GAAC,SAAS;mBAC5B,MAAY,MAAM,GAAC,SAAS;8BAC5B,MAAY,MAAM,GAAC,SAAS;qBAC5B,MAAY,MAAM,GAAC,SAAS;cAC5B,MAAY,OAAO,GAAC,SAAS;YAC7B,MAAY,OAAO,GAAC,SAAS;mBAC7B,MAAY,OAAO,GAAC,SAAS;gBAC7B,MAAY,OAAO,GAAC,SAAS;aAC7B,MAAY,OAAO,GAAC,SAAS;kBAC7B,MAAY,OAAO,GAAC,SAAS;qBAC7B,MAAY,MAAM,GAAC,SAAS"}
@@ -1 +1 @@
1
- {"version":3,"file":"slothlet_eager.d.mts","sourceRoot":"","sources":["../../../../dist/lib/modes/slothlet_eager.mjs"],"names":[],"mappings":"AA4IA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAsDH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,4BArBW,MAAM,aACN,MAAM,iBACN,MAAM,GACJ,OAAO,CAAC,MAAM,CAAC,CAgH3B"}
1
+ {"version":3,"file":"slothlet_eager.d.mts","sourceRoot":"","sources":["../../../../dist/lib/modes/slothlet_eager.mjs"],"names":[],"mappings":"AA4IA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAsDH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,4BArBW,MAAM,aACN,MAAM,iBACN,MAAM,GACJ,OAAO,CAAC,MAAM,CAAC,CA4I3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"slothlet_lazy.d.mts","sourceRoot":"","sources":["../../../../dist/lib/modes/slothlet_lazy.mjs"],"names":[],"mappings":"AAgKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,4BAtBW,MAAM,aACN,MAAM,iBACN,MAAM,GACJ,OAAO,CAAC,WAAS,MAAM,CAAC,CAkKpC"}
1
+ {"version":3,"file":"slothlet_lazy.d.mts","sourceRoot":"","sources":["../../../../dist/lib/modes/slothlet_lazy.mjs"],"names":[],"mappings":"AAgKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,4BAtBW,MAAM,aACN,MAAM,iBACN,MAAM,GACJ,OAAO,CAAC,WAAS,MAAM,CAAC,CAmKpC"}
@@ -60,6 +60,8 @@ export const context: object;
60
60
  * console.log(reference); // Current reference data
61
61
  */
62
62
  export const reference: object;
63
+ export { metadataAPI };
63
64
  export type AsyncLocalStorageType = AsyncLocalStorage<any>;
65
+ import { metadataAPI } from "@cldmv/slothlet/helpers/metadata-api";
64
66
  import { AsyncLocalStorage } from "node:async_hooks";
65
67
  //# sourceMappingURL=runtime-asynclocalstorage.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-asynclocalstorage.d.mts","sourceRoot":"","sources":["../../../../dist/lib/runtime/runtime-asynclocalstorage.mjs"],"names":[],"mappings":"AAuCA;;;;;GAKG;AACH,wBAHU,qBAAqB,CAGkB;AAEjD;;;;;GAKG;AACH,yBAHU,qBAAqB,CAGmB;AAsB3C,gCAdI,MAAM,yBAEN,GAAG,gBAED,GAAG,CAwGf;AAiBM,0BAZM,MAAM,GAAC,IAAI,CAY0B;AAkN3C,iCAjBI,MAAM,YAiJhB;AA2TD;;;;;;;;;;;;;GAaG;AACH,mBATU,WAAS,MAAM,CAS6B;AAEtD;;;;;;;;;;;;;GAaG;AACH,sBATU,MAAM,CAS4C;AAE5D;;;;;;;;;;;;;GAaG;AACH,wBATU,MAAM,CASgD;;kCAp1B9B,kBAAkB"}
1
+ {"version":3,"file":"runtime-asynclocalstorage.d.mts","sourceRoot":"","sources":["../../../../dist/lib/runtime/runtime-asynclocalstorage.mjs"],"names":[],"mappings":"AAwCA;;;;;GAKG;AACH,wBAHU,qBAAqB,CAGkB;AAEjD;;;;;GAKG;AACH,yBAHU,qBAAqB,CAGmB;AAsB3C,gCAdI,MAAM,yBAEN,GAAG,gBAED,GAAG,CAwGf;AAiBM,0BAZM,MAAM,GAAC,IAAI,CAY0B;AAkN3C,iCAjBI,MAAM,YAiJhB;AA2TD;;;;;;;;;;;;;GAaG;AACH,mBATU,WAAS,MAAM,CAS6B;AAEtD;;;;;;;;;;;;;GAaG;AACH,sBATU,MAAM,CAS4C;AAE5D;;;;;;;;;;;;;GAaG;AACH,wBATU,MAAM,CASgD;;;4BAl1BpC,sCAAsC;kCAHhC,kBAAkB"}
@@ -63,5 +63,7 @@ export namespace contextManager {
63
63
  export { setContext as set };
64
64
  export { runWithCtx };
65
65
  }
66
+ export { metadataAPI };
66
67
  import { AsyncLocalStorage } from "node:async_hooks";
68
+ import { metadataAPI } from "@cldmv/slothlet/helpers/metadata-api";
67
69
  //# sourceMappingURL=runtime-livebindings.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-livebindings.d.mts","sourceRoot":"","sources":["../../../../dist/lib/runtime/runtime-livebindings.mjs"],"names":[],"mappings":"AA+SA;;;;;;;;;GASG;AACH,gCANW,MAAM,yBAEN,GAAG,gBAED,GAAG,CAoFf;AAED;;;;;;GAMG;AACH,iCAHW,MAAM,YAiEhB;AAID;;;GAGG;AAEH,kCAEC;AAED,kDASC;AA/bD;;;;;GAKG;AACH,gDAAkD;AA8ClD;;;;;GAKG;AACH,mBAHU,MAAM,CAmDd;AAEF;;;;;GAKG;AACH,sBAHU,MAAM,CA0Dd;AAEF;;;;;GAKG;AACH,wBAHU,MAAM,CA+Cd;AAEF;;;;;GAKG;AACH,yBAHU,MAAM,CAkCd;;;;;;kCA5QgC,kBAAkB"}
1
+ {"version":3,"file":"runtime-livebindings.d.mts","sourceRoot":"","sources":["../../../../dist/lib/runtime/runtime-livebindings.mjs"],"names":[],"mappings":"AAgTA;;;;;;;;;GASG;AACH,gCANW,MAAM,yBAEN,GAAG,gBAED,GAAG,CAoFf;AAED;;;;;;GAMG;AACH,iCAHW,MAAM,YAiEhB;AAID;;;GAGG;AAEH,kCAEC;AAED,kDASC;AA/bD;;;;;GAKG;AACH,gDAAkD;AA8ClD;;;;;GAKG;AACH,mBAHU,MAAM,CAmDd;AAEF;;;;;GAKG;AACH,sBAHU,MAAM,CA0Dd;AAEF;;;;;GAKG;AACH,wBAHU,MAAM,CA+Cd;AAEF;;;;;GAKG;AACH,yBAHU,MAAM,CAkCd;;;;;;;kCA7QgC,kBAAkB;4BAOxB,sCAAsC"}
@@ -6,4 +6,5 @@ export const context: {};
6
6
  export const reference: {};
7
7
  export const instanceId: any;
8
8
  export const sharedALS: any;
9
+ export const metadataAPI: {};
9
10
  //# sourceMappingURL=runtime.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.mts","sourceRoot":"","sources":["../../../../dist/lib/runtime/runtime.mjs"],"names":[],"mappings":"AAoMA,4EAGC;AAED,gDAGC;AAED,8BAGC;AArKA,6BAA+B;AAkDhC,yBAiDE;AAEF,2BAiDE;AAiBF,6BAOK;AAEL,4BAAuD"}
1
+ {"version":3,"file":"runtime.d.mts","sourceRoot":"","sources":["../../../../dist/lib/runtime/runtime.mjs"],"names":[],"mappings":"AAoMA,4EAGC;AAED,gDAGC;AAED,8BAGC;AArKA,6BAA+B;AAkDhC,yBAiDE;AAEF,2BAiDE;AAiBF,6BAOK;AAEL,4BAAuD;AAGvD,6BAQE"}
@@ -88,6 +88,14 @@ export type SlothletOptions = {
88
88
  * - Applies to both function and object overwrites at the final key of the API path
89
89
  */
90
90
  allowApiOverwrite?: boolean;
91
+ /**
92
+ * - Enable module-based API ownership tracking for selective overwrites:
93
+ * - `true`: Track which modules register APIs, enable forceOverwrite with moduleId validation
94
+ * - `false`: Disable ownership tracking (default, no performance overhead)
95
+ * - When enabled, supports hot-reloading scenarios where modules can selectively overwrite only their own APIs
96
+ * - Requires moduleId parameter in addApi options when using forceOverwrite capability
97
+ */
98
+ enableModuleOwnership?: boolean;
91
99
  /**
92
100
  * - Context data object injected into live-binding `context` reference.
93
101
  * - Available to all loaded modules via `import { context } from "@cldmv/slothlet/runtime"`. Useful for request data,
@@ -1 +1 @@
1
- {"version":3,"file":"slothlet.d.mts","sourceRoot":"","sources":["../../dist/slothlet.mjs"],"names":[],"mappings":"AA0LA;;;;;;;GAOG;AACH,mBAJU,MAAM,CAIO;AAEvB;;;;;GAKG;AACH,sBAJU,MAAM,CAIU;AAE1B;;;;;GAKG;AACH,wBAJU,MAAM,CAIY;;;;;;;;;UAsmCd,MAAM;;;;;;WAIN,OAAO;;;;;;;;WAGP,MAAM;;;;;;;;aAKN,MAAM;;;;;;;cAKN,MAAM;;;;;;;eAIN,MAAM;;;;;;;;YAIN,OAAO;;;;;;;eAKP,MAAM;;;;;;;wBAIN,OAAO;;;;;;cAIP,MAAM;;;;;;gBAGN,MAAM;;;;;;eAMjB;QAA8B,UAAU,GAA7B,OAAO;QACY,gBAAgB,GAAnC,OAAO;QACY,gBAAgB,GAAnC,OAAO;QACW,KAAK,GAClC;YAAqC,KAAK,GAA/B,MAAM,EAAE;YACkB,gBAAgB,GAA1C,MAAM,EAAE;YACkB,KAAK,GAA/B,MAAM,EAAE;YACkB,KAAK,GAA/B,MAAM,EAAE;SACrB;KAAA;;;;;;cAIa,MAAM,OAAO,CAAC,IAAI,CAAC;;;;YACnB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;;;;cACtD,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,MAAM,GAAC,MAAM,CAAC,EAAE,GAAC,MAAM,GAAC,OAAO,CAAC,MAAM,CAAC,CAAC;;AAjqC/E;;;;;;;;GAQG;AACH,mCAJW,eAAe,GACb,OAAO,CAAC,WAAW,CAAC,CAiChC"}
1
+ {"version":3,"file":"slothlet.d.mts","sourceRoot":"","sources":["../../dist/slothlet.mjs"],"names":[],"mappings":"AA+LA;;;;;;;GAOG;AACH,mBAJU,MAAM,CAIO;AAEvB;;;;;GAKG;AACH,sBAJU,MAAM,CAIU;AAE1B;;;;;GAKG;AACH,wBAJU,MAAM,CAIY;;;;;;;;;UAqtCd,MAAM;;;;;;WAIN,OAAO;;;;;;;;WAGP,MAAM;;;;;;;;aAKN,MAAM;;;;;;;cAKN,MAAM;;;;;;;eAIN,MAAM;;;;;;;;YAIN,OAAO;;;;;;;eAKP,MAAM;;;;;;;wBAIN,OAAO;;;;;;;;4BAIP,OAAO;;;;;;cAKP,MAAM;;;;;;gBAGN,MAAM;;;;;;eAMjB;QAA8B,UAAU,GAA7B,OAAO;QACY,gBAAgB,GAAnC,OAAO;QACY,gBAAgB,GAAnC,OAAO;QACW,KAAK,GAClC;YAAqC,KAAK,GAA/B,MAAM,EAAE;YACkB,gBAAgB,GAA1C,MAAM,EAAE;YACkB,KAAK,GAA/B,MAAM,EAAE;YACkB,KAAK,GAA/B,MAAM,EAAE;SACrB;KAAA;;;;;;cAIa,MAAM,OAAO,CAAC,IAAI,CAAC;;;;YACnB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;;;;cACtD,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,MAAM,GAAC,MAAM,CAAC,EAAE,GAAC,MAAM,GAAC,OAAO,CAAC,MAAM,CAAC,CAAC;;AArxC/E;;;;;;;;GAQG;AACH,mCAJW,eAAe,GACb,OAAO,CAAC,WAAW,CAAC,CAiChC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../index.mjs"],"names":[],"mappings":"AA2CA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,2CAlBG;IAAyB,GAAG,GAApB,MAAM;IACY,IAAI,GAAtB,OAAO;IACU,IAAI,GAArB,MAAM;IACW,MAAM,GAAvB,MAAM;IACW,QAAQ,GAAzB,MAAM;IACY,KAAK,GAAvB,OAAO;IACU,QAAQ,GAAzB,MAAM;IACY,iBAAiB,GAAnC,OAAO;IACU,OAAO,GAAxB,MAAM;IACW,SAAS,GAA1B,MAAM;CACd,GAAU,OAAO,CAAC,OAAO,oBAAoB,EAAE,WAAW,CAAC,CAiC7D"}