@senior-skills/core 1.0.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 (177) hide show
  1. package/dist/application/agent-selection.d.ts +42 -0
  2. package/dist/application/agent-selection.d.ts.map +1 -0
  3. package/dist/application/agent-selection.js +143 -0
  4. package/dist/application/agent-selection.js.map +1 -0
  5. package/dist/application/apply-skill-updates.d.ts +10 -0
  6. package/dist/application/apply-skill-updates.d.ts.map +1 -0
  7. package/dist/application/apply-skill-updates.js +75 -0
  8. package/dist/application/apply-skill-updates.js.map +1 -0
  9. package/dist/application/check-updates.d.ts +40 -0
  10. package/dist/application/check-updates.d.ts.map +1 -0
  11. package/dist/application/check-updates.js +130 -0
  12. package/dist/application/check-updates.js.map +1 -0
  13. package/dist/application/context.d.ts +28 -0
  14. package/dist/application/context.d.ts.map +1 -0
  15. package/dist/application/context.js +2 -0
  16. package/dist/application/context.js.map +1 -0
  17. package/dist/application/create-skill.d.ts +33 -0
  18. package/dist/application/create-skill.d.ts.map +1 -0
  19. package/dist/application/create-skill.js +58 -0
  20. package/dist/application/create-skill.js.map +1 -0
  21. package/dist/application/diagnose.d.ts +44 -0
  22. package/dist/application/diagnose.d.ts.map +1 -0
  23. package/dist/application/diagnose.js +228 -0
  24. package/dist/application/diagnose.js.map +1 -0
  25. package/dist/application/install-skills.d.ts +59 -0
  26. package/dist/application/install-skills.d.ts.map +1 -0
  27. package/dist/application/install-skills.js +191 -0
  28. package/dist/application/install-skills.js.map +1 -0
  29. package/dist/application/list-installed.d.ts +39 -0
  30. package/dist/application/list-installed.d.ts.map +1 -0
  31. package/dist/application/list-installed.js +68 -0
  32. package/dist/application/list-installed.js.map +1 -0
  33. package/dist/application/package-loader.d.ts +42 -0
  34. package/dist/application/package-loader.d.ts.map +1 -0
  35. package/dist/application/package-loader.js +320 -0
  36. package/dist/application/package-loader.js.map +1 -0
  37. package/dist/application/publish-skill.d.ts +41 -0
  38. package/dist/application/publish-skill.d.ts.map +1 -0
  39. package/dist/application/publish-skill.js +112 -0
  40. package/dist/application/publish-skill.js.map +1 -0
  41. package/dist/application/remove-skills.d.ts +34 -0
  42. package/dist/application/remove-skills.d.ts.map +1 -0
  43. package/dist/application/remove-skills.js +95 -0
  44. package/dist/application/remove-skills.js.map +1 -0
  45. package/dist/application/resolution-source.d.ts +25 -0
  46. package/dist/application/resolution-source.d.ts.map +1 -0
  47. package/dist/application/resolution-source.js +60 -0
  48. package/dist/application/resolution-source.js.map +1 -0
  49. package/dist/application/resolve-suggestions.d.ts +17 -0
  50. package/dist/application/resolve-suggestions.d.ts.map +1 -0
  51. package/dist/application/resolve-suggestions.js +77 -0
  52. package/dist/application/resolve-suggestions.js.map +1 -0
  53. package/dist/application/search-skills.d.ts +36 -0
  54. package/dist/application/search-skills.d.ts.map +1 -0
  55. package/dist/application/search-skills.js +78 -0
  56. package/dist/application/search-skills.js.map +1 -0
  57. package/dist/application/update-skills.d.ts +55 -0
  58. package/dist/application/update-skills.d.ts.map +1 -0
  59. package/dist/application/update-skills.js +115 -0
  60. package/dist/application/update-skills.js.map +1 -0
  61. package/dist/application/validate-package.d.ts +27 -0
  62. package/dist/application/validate-package.d.ts.map +1 -0
  63. package/dist/application/validate-package.js +165 -0
  64. package/dist/application/validate-package.js.map +1 -0
  65. package/dist/application/workspace.d.ts +22 -0
  66. package/dist/application/workspace.d.ts.map +1 -0
  67. package/dist/application/workspace.js +66 -0
  68. package/dist/application/workspace.js.map +1 -0
  69. package/dist/domain/agent.d.ts +89 -0
  70. package/dist/domain/agent.d.ts.map +1 -0
  71. package/dist/domain/agent.js +20 -0
  72. package/dist/domain/agent.js.map +1 -0
  73. package/dist/domain/errors.d.ts +91 -0
  74. package/dist/domain/errors.d.ts.map +1 -0
  75. package/dist/domain/errors.js +121 -0
  76. package/dist/domain/errors.js.map +1 -0
  77. package/dist/domain/integrity.d.ts +19 -0
  78. package/dist/domain/integrity.d.ts.map +1 -0
  79. package/dist/domain/integrity.js +0 -0
  80. package/dist/domain/integrity.js.map +1 -0
  81. package/dist/domain/js-literal.d.ts +22 -0
  82. package/dist/domain/js-literal.d.ts.map +1 -0
  83. package/dist/domain/js-literal.js +221 -0
  84. package/dist/domain/js-literal.js.map +1 -0
  85. package/dist/domain/lockfile.d.ts +36 -0
  86. package/dist/domain/lockfile.d.ts.map +1 -0
  87. package/dist/domain/lockfile.js +148 -0
  88. package/dist/domain/lockfile.js.map +1 -0
  89. package/dist/domain/manifest.d.ts +96 -0
  90. package/dist/domain/manifest.d.ts.map +1 -0
  91. package/dist/domain/manifest.js +448 -0
  92. package/dist/domain/manifest.js.map +1 -0
  93. package/dist/domain/path-safety.d.ts +19 -0
  94. package/dist/domain/path-safety.d.ts.map +1 -0
  95. package/dist/domain/path-safety.js +125 -0
  96. package/dist/domain/path-safety.js.map +1 -0
  97. package/dist/domain/posix-path.d.ts +28 -0
  98. package/dist/domain/posix-path.d.ts.map +1 -0
  99. package/dist/domain/posix-path.js +84 -0
  100. package/dist/domain/posix-path.js.map +1 -0
  101. package/dist/domain/receipt.d.ts +41 -0
  102. package/dist/domain/receipt.d.ts.map +1 -0
  103. package/dist/domain/receipt.js +93 -0
  104. package/dist/domain/receipt.js.map +1 -0
  105. package/dist/domain/registry-index.d.ts +41 -0
  106. package/dist/domain/registry-index.d.ts.map +1 -0
  107. package/dist/domain/registry-index.js +150 -0
  108. package/dist/domain/registry-index.js.map +1 -0
  109. package/dist/domain/resolver.d.ts +54 -0
  110. package/dist/domain/resolver.d.ts.map +1 -0
  111. package/dist/domain/resolver.js +238 -0
  112. package/dist/domain/resolver.js.map +1 -0
  113. package/dist/domain/skill-document.d.ts +16 -0
  114. package/dist/domain/skill-document.d.ts.map +1 -0
  115. package/dist/domain/skill-document.js +60 -0
  116. package/dist/domain/skill-document.js.map +1 -0
  117. package/dist/domain/skill-package.d.ts +43 -0
  118. package/dist/domain/skill-package.d.ts.map +1 -0
  119. package/dist/domain/skill-package.js +63 -0
  120. package/dist/domain/skill-package.js.map +1 -0
  121. package/dist/domain/skill-ref.d.ts +30 -0
  122. package/dist/domain/skill-ref.d.ts.map +1 -0
  123. package/dist/domain/skill-ref.js +119 -0
  124. package/dist/domain/skill-ref.js.map +1 -0
  125. package/dist/domain/validation.d.ts +30 -0
  126. package/dist/domain/validation.d.ts.map +1 -0
  127. package/dist/domain/validation.js +32 -0
  128. package/dist/domain/validation.js.map +1 -0
  129. package/dist/domain/version.d.ts +23 -0
  130. package/dist/domain/version.d.ts.map +1 -0
  131. package/dist/domain/version.js +81 -0
  132. package/dist/domain/version.js.map +1 -0
  133. package/dist/domain/workflow-document.d.ts +23 -0
  134. package/dist/domain/workflow-document.d.ts.map +1 -0
  135. package/dist/domain/workflow-document.js +56 -0
  136. package/dist/domain/workflow-document.js.map +1 -0
  137. package/dist/index.d.ts +47 -0
  138. package/dist/index.d.ts.map +1 -0
  139. package/dist/index.js +45 -0
  140. package/dist/index.js.map +1 -0
  141. package/dist/ports/agent-adapter.d.ts +65 -0
  142. package/dist/ports/agent-adapter.d.ts.map +1 -0
  143. package/dist/ports/agent-adapter.js +28 -0
  144. package/dist/ports/agent-adapter.js.map +1 -0
  145. package/dist/ports/config-store.d.ts +27 -0
  146. package/dist/ports/config-store.d.ts.map +1 -0
  147. package/dist/ports/config-store.js +2 -0
  148. package/dist/ports/config-store.js.map +1 -0
  149. package/dist/ports/infrastructure.d.ts +123 -0
  150. package/dist/ports/infrastructure.d.ts.map +1 -0
  151. package/dist/ports/infrastructure.js +9 -0
  152. package/dist/ports/infrastructure.js.map +1 -0
  153. package/dist/ports/installation.d.ts +86 -0
  154. package/dist/ports/installation.d.ts.map +1 -0
  155. package/dist/ports/installation.js +2 -0
  156. package/dist/ports/installation.js.map +1 -0
  157. package/dist/ports/skill-registry.d.ts +74 -0
  158. package/dist/ports/skill-registry.d.ts.map +1 -0
  159. package/dist/ports/skill-registry.js +2 -0
  160. package/dist/ports/skill-registry.js.map +1 -0
  161. package/dist/ports/updates.d.ts +31 -0
  162. package/dist/ports/updates.d.ts.map +1 -0
  163. package/dist/ports/updates.js +4 -0
  164. package/dist/ports/updates.js.map +1 -0
  165. package/dist/testing/doubles.d.ts +127 -0
  166. package/dist/testing/doubles.d.ts.map +1 -0
  167. package/dist/testing/doubles.js +299 -0
  168. package/dist/testing/doubles.js.map +1 -0
  169. package/dist/testing/in-memory-file-system.d.ts +61 -0
  170. package/dist/testing/in-memory-file-system.d.ts.map +1 -0
  171. package/dist/testing/in-memory-file-system.js +297 -0
  172. package/dist/testing/in-memory-file-system.js.map +1 -0
  173. package/dist/testing/index.d.ts +10 -0
  174. package/dist/testing/index.d.ts.map +1 -0
  175. package/dist/testing/index.js +10 -0
  176. package/dist/testing/index.js.map +1 -0
  177. package/package.json +37 -0
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Every user-facing failure in the system is an {@link AgentSkillsError} carrying a stable
3
+ * code. Codes are part of the public contract: they appear in `--json` output, in error
4
+ * messages, so scripts and bug reports can refer to them.
5
+ */
6
+ export declare const ErrorCode: {
7
+ /** The CLI was invoked in a way that cannot be interpreted. */
8
+ readonly USAGE: "ASK_USAGE";
9
+ /** A manifest, SKILL.md, or package layout violated the format. */
10
+ readonly INVALID_MANIFEST: "ASK_INVALID_MANIFEST";
11
+ readonly INVALID_PACKAGE: "ASK_INVALID_PACKAGE";
12
+ readonly INVALID_SKILL_NAME: "ASK_INVALID_SKILL_NAME";
13
+ readonly INVALID_VERSION: "ASK_INVALID_VERSION";
14
+ /** The package format is newer than this CLI understands. */
15
+ readonly UNSUPPORTED_SCHEMA: "ASK_UNSUPPORTED_SCHEMA";
16
+ /** Resolution failures. */
17
+ readonly SKILL_NOT_FOUND: "ASK_SKILL_NOT_FOUND";
18
+ readonly VERSION_NOT_FOUND: "ASK_VERSION_NOT_FOUND";
19
+ readonly DEPENDENCY_CONFLICT: "ASK_DEPENDENCY_CONFLICT";
20
+ readonly DEPENDENCY_CYCLE: "ASK_DEPENDENCY_CYCLE";
21
+ /** Registry failures. */
22
+ readonly REGISTRY_NOT_FOUND: "ASK_REGISTRY_NOT_FOUND";
23
+ readonly REGISTRY_UNAVAILABLE: "ASK_REGISTRY_UNAVAILABLE";
24
+ readonly REGISTRY_INVALID_INDEX: "ASK_REGISTRY_INVALID_INDEX";
25
+ readonly REGISTRY_DUPLICATE: "ASK_REGISTRY_DUPLICATE";
26
+ /** Security and integrity failures. */
27
+ readonly INTEGRITY_MISMATCH: "ASK_INTEGRITY_MISMATCH";
28
+ readonly UNSAFE_PATH: "ASK_UNSAFE_PATH";
29
+ readonly UNSAFE_ARCHIVE: "ASK_UNSAFE_ARCHIVE";
30
+ readonly INSECURE_TRANSPORT: "ASK_INSECURE_TRANSPORT";
31
+ /** Agent selection and detection. */
32
+ readonly NO_AGENT_DETECTED: "ASK_NO_AGENT_DETECTED";
33
+ readonly UNKNOWN_AGENT: "ASK_UNKNOWN_AGENT";
34
+ readonly AGENT_INCOMPATIBLE: "ASK_AGENT_INCOMPATIBLE";
35
+ /** Installation lifecycle. */
36
+ readonly ALREADY_INSTALLED: "ASK_ALREADY_INSTALLED";
37
+ readonly NOT_INSTALLED: "ASK_NOT_INSTALLED";
38
+ readonly INSTALL_FAILED: "ASK_INSTALL_FAILED";
39
+ readonly MODIFIED_INSTALL: "ASK_MODIFIED_INSTALL";
40
+ /** Lockfile. */
41
+ readonly LOCKFILE_INVALID: "ASK_LOCKFILE_INVALID";
42
+ readonly LOCKFILE_MISMATCH: "ASK_LOCKFILE_MISMATCH";
43
+ /** Filesystem and environment. */
44
+ readonly IO_ERROR: "ASK_IO_ERROR";
45
+ readonly PERMISSION_DENIED: "ASK_PERMISSION_DENIED";
46
+ /** Publishing. */
47
+ readonly PUBLISH_REJECTED: "ASK_PUBLISH_REJECTED";
48
+ /** Anything genuinely unexpected. */
49
+ readonly INTERNAL: "ASK_INTERNAL";
50
+ };
51
+ export type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];
52
+ export interface AgentSkillsErrorOptions {
53
+ /** Extra lines rendered under the headline, in order. */
54
+ readonly details?: readonly string[];
55
+ /** Concrete next actions, rendered under a `Try:` heading. */
56
+ readonly hints?: readonly string[];
57
+ /** Underlying cause, preserved for `--verbose` stack output. */
58
+ readonly cause?: unknown;
59
+ /** Structured payload surfaced in `--json` mode. */
60
+ readonly data?: Readonly<Record<string, unknown>>;
61
+ }
62
+ /**
63
+ * The single error type crossing the application boundary. Infrastructure errors are
64
+ * wrapped rather than rethrown so the CLI never has to interpret an `ENOENT`.
65
+ */
66
+ export declare class AgentSkillsError extends Error {
67
+ readonly code: ErrorCode;
68
+ readonly details: readonly string[];
69
+ readonly hints: readonly string[];
70
+ readonly data: Readonly<Record<string, unknown>>;
71
+ constructor(code: ErrorCode, message: string, options?: AgentSkillsErrorOptions);
72
+ toJSON(): Record<string, unknown>;
73
+ }
74
+ export declare function isAgentSkillsError(value: unknown): value is AgentSkillsError;
75
+ /**
76
+ * Process exit codes. Distinct codes for validation, resolution and security let CI
77
+ * scripts react differently to "your package is wrong" and "the download was tampered
78
+ * with", which is the whole point of not returning 1 for everything.
79
+ */
80
+ export declare const ExitCode: {
81
+ readonly OK: 0;
82
+ readonly FAILURE: 1;
83
+ readonly USAGE: 2;
84
+ readonly VALIDATION: 3;
85
+ readonly RESOLUTION: 4;
86
+ readonly SECURITY: 5;
87
+ readonly NO_AGENT: 6;
88
+ };
89
+ export type ExitCode = (typeof ExitCode)[keyof typeof ExitCode];
90
+ export declare function exitCodeFor(error: unknown): ExitCode;
91
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/domain/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,SAAS;IACpB,+DAA+D;;IAE/D,mEAAmE;;;;;IAKnE,6DAA6D;;IAE7D,2BAA2B;;;;;IAK3B,yBAAyB;;;;;IAKzB,uCAAuC;;;;;IAKvC,qCAAqC;;;;IAIrC,8BAA8B;;;;;IAK9B,gBAAgB;;;IAGhB,kCAAkC;;;IAGlC,kBAAkB;;IAElB,qCAAqC;;CAE7B,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAEnE,MAAM,WAAW,uBAAuB;IACtC,yDAAyD;IACzD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,gEAAgE;IAChE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,oDAAoD;IACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACnD;AAED;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;gBAErC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B;IASnF,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAUlC;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE5E;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ;;;;;;;;CAQX,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAuBhE,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAGpD"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Every user-facing failure in the system is an {@link AgentSkillsError} carrying a stable
3
+ * code. Codes are part of the public contract: they appear in `--json` output, in error
4
+ * messages, so scripts and bug reports can refer to them.
5
+ */
6
+ export const ErrorCode = {
7
+ /** The CLI was invoked in a way that cannot be interpreted. */
8
+ USAGE: 'ASK_USAGE',
9
+ /** A manifest, SKILL.md, or package layout violated the format. */
10
+ INVALID_MANIFEST: 'ASK_INVALID_MANIFEST',
11
+ INVALID_PACKAGE: 'ASK_INVALID_PACKAGE',
12
+ INVALID_SKILL_NAME: 'ASK_INVALID_SKILL_NAME',
13
+ INVALID_VERSION: 'ASK_INVALID_VERSION',
14
+ /** The package format is newer than this CLI understands. */
15
+ UNSUPPORTED_SCHEMA: 'ASK_UNSUPPORTED_SCHEMA',
16
+ /** Resolution failures. */
17
+ SKILL_NOT_FOUND: 'ASK_SKILL_NOT_FOUND',
18
+ VERSION_NOT_FOUND: 'ASK_VERSION_NOT_FOUND',
19
+ DEPENDENCY_CONFLICT: 'ASK_DEPENDENCY_CONFLICT',
20
+ DEPENDENCY_CYCLE: 'ASK_DEPENDENCY_CYCLE',
21
+ /** Registry failures. */
22
+ REGISTRY_NOT_FOUND: 'ASK_REGISTRY_NOT_FOUND',
23
+ REGISTRY_UNAVAILABLE: 'ASK_REGISTRY_UNAVAILABLE',
24
+ REGISTRY_INVALID_INDEX: 'ASK_REGISTRY_INVALID_INDEX',
25
+ REGISTRY_DUPLICATE: 'ASK_REGISTRY_DUPLICATE',
26
+ /** Security and integrity failures. */
27
+ INTEGRITY_MISMATCH: 'ASK_INTEGRITY_MISMATCH',
28
+ UNSAFE_PATH: 'ASK_UNSAFE_PATH',
29
+ UNSAFE_ARCHIVE: 'ASK_UNSAFE_ARCHIVE',
30
+ INSECURE_TRANSPORT: 'ASK_INSECURE_TRANSPORT',
31
+ /** Agent selection and detection. */
32
+ NO_AGENT_DETECTED: 'ASK_NO_AGENT_DETECTED',
33
+ UNKNOWN_AGENT: 'ASK_UNKNOWN_AGENT',
34
+ AGENT_INCOMPATIBLE: 'ASK_AGENT_INCOMPATIBLE',
35
+ /** Installation lifecycle. */
36
+ ALREADY_INSTALLED: 'ASK_ALREADY_INSTALLED',
37
+ NOT_INSTALLED: 'ASK_NOT_INSTALLED',
38
+ INSTALL_FAILED: 'ASK_INSTALL_FAILED',
39
+ MODIFIED_INSTALL: 'ASK_MODIFIED_INSTALL',
40
+ /** Lockfile. */
41
+ LOCKFILE_INVALID: 'ASK_LOCKFILE_INVALID',
42
+ LOCKFILE_MISMATCH: 'ASK_LOCKFILE_MISMATCH',
43
+ /** Filesystem and environment. */
44
+ IO_ERROR: 'ASK_IO_ERROR',
45
+ PERMISSION_DENIED: 'ASK_PERMISSION_DENIED',
46
+ /** Publishing. */
47
+ PUBLISH_REJECTED: 'ASK_PUBLISH_REJECTED',
48
+ /** Anything genuinely unexpected. */
49
+ INTERNAL: 'ASK_INTERNAL',
50
+ };
51
+ /**
52
+ * The single error type crossing the application boundary. Infrastructure errors are
53
+ * wrapped rather than rethrown so the CLI never has to interpret an `ENOENT`.
54
+ */
55
+ export class AgentSkillsError extends Error {
56
+ code;
57
+ details;
58
+ hints;
59
+ data;
60
+ constructor(code, message, options = {}) {
61
+ super(message, options.cause === undefined ? undefined : { cause: options.cause });
62
+ this.name = 'AgentSkillsError';
63
+ this.code = code;
64
+ this.details = options.details ?? [];
65
+ this.hints = options.hints ?? [];
66
+ this.data = options.data ?? {};
67
+ }
68
+ toJSON() {
69
+ return {
70
+ error: true,
71
+ code: this.code,
72
+ message: this.message,
73
+ details: this.details,
74
+ hints: this.hints,
75
+ ...this.data,
76
+ };
77
+ }
78
+ }
79
+ export function isAgentSkillsError(value) {
80
+ return value instanceof AgentSkillsError;
81
+ }
82
+ /**
83
+ * Process exit codes. Distinct codes for validation, resolution and security let CI
84
+ * scripts react differently to "your package is wrong" and "the download was tampered
85
+ * with", which is the whole point of not returning 1 for everything.
86
+ */
87
+ export const ExitCode = {
88
+ OK: 0,
89
+ FAILURE: 1,
90
+ USAGE: 2,
91
+ VALIDATION: 3,
92
+ RESOLUTION: 4,
93
+ SECURITY: 5,
94
+ NO_AGENT: 6,
95
+ };
96
+ const EXIT_BY_CODE = {
97
+ [ErrorCode.USAGE]: ExitCode.USAGE,
98
+ [ErrorCode.INVALID_MANIFEST]: ExitCode.VALIDATION,
99
+ [ErrorCode.INVALID_PACKAGE]: ExitCode.VALIDATION,
100
+ [ErrorCode.INVALID_SKILL_NAME]: ExitCode.VALIDATION,
101
+ [ErrorCode.INVALID_VERSION]: ExitCode.VALIDATION,
102
+ [ErrorCode.UNSUPPORTED_SCHEMA]: ExitCode.VALIDATION,
103
+ [ErrorCode.LOCKFILE_INVALID]: ExitCode.VALIDATION,
104
+ [ErrorCode.PUBLISH_REJECTED]: ExitCode.VALIDATION,
105
+ [ErrorCode.SKILL_NOT_FOUND]: ExitCode.RESOLUTION,
106
+ [ErrorCode.VERSION_NOT_FOUND]: ExitCode.RESOLUTION,
107
+ [ErrorCode.DEPENDENCY_CONFLICT]: ExitCode.RESOLUTION,
108
+ [ErrorCode.DEPENDENCY_CYCLE]: ExitCode.RESOLUTION,
109
+ [ErrorCode.INTEGRITY_MISMATCH]: ExitCode.SECURITY,
110
+ [ErrorCode.UNSAFE_PATH]: ExitCode.SECURITY,
111
+ [ErrorCode.UNSAFE_ARCHIVE]: ExitCode.SECURITY,
112
+ [ErrorCode.INSECURE_TRANSPORT]: ExitCode.SECURITY,
113
+ [ErrorCode.LOCKFILE_MISMATCH]: ExitCode.SECURITY,
114
+ [ErrorCode.NO_AGENT_DETECTED]: ExitCode.NO_AGENT,
115
+ };
116
+ export function exitCodeFor(error) {
117
+ if (!isAgentSkillsError(error))
118
+ return ExitCode.FAILURE;
119
+ return EXIT_BY_CODE[error.code] ?? ExitCode.FAILURE;
120
+ }
121
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/domain/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { Hasher } from '../ports/infrastructure.ts';
2
+ import type { PackageFile, SkillPackage } from './skill-package.ts';
3
+ /**
4
+ * Package integrity is a hash over a *canonical digest tree*, not over a tarball.
5
+ *
6
+ * Hashing an archive would make the integrity string depend on tar block padding, mtimes and
7
+ * gzip settings — so the same package fetched from a git registry and from an HTTP registry
8
+ * would hash differently. Hashing content instead means one skill has one integrity value
9
+ * regardless of how it travelled, which is what lets a lockfile written against a git
10
+ * registry keep verifying after a migration to HTTP.
11
+ *
12
+ * The `integrity` field inside `skill.yaml` is excluded from its own input, since it cannot
13
+ * be known before it is computed.
14
+ */
15
+ export declare const INTEGRITY_PREFIX = "sha256-";
16
+ export declare function computeIntegrity(files: readonly PackageFile[], hasher: Hasher): string;
17
+ export declare function computePackageIntegrity(pkg: SkillPackage, hasher: Hasher): string;
18
+ export declare function isIntegrityString(value: string): boolean;
19
+ //# sourceMappingURL=integrity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrity.d.ts","sourceRoot":"","sources":["../../src/domain/integrity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEpE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAE1C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAMtF;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEjF;AAsBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAExD"}
Binary file
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrity.js","sourceRoot":"","sources":["../../src/domain/integrity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGlD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAE1C,MAAM,UAAU,gBAAgB,CAAC,KAA6B,EAAE,MAAc;IAC5E,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC;SACrB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAChE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAE3E,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,GAAiB,EAAE,MAAc;IACvE,OAAO,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,IAAiB;IAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IAEvD,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IAElD,MAAM,QAAQ,GAAG,IAAI;SAClB,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7C,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;AACtF,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * A parser for JavaScript *literal* expressions — objects, arrays, strings, numbers,
3
+ * booleans and null. Nothing else: no identifiers, no operators, no function calls.
4
+ *
5
+ * It exists so a workflow's `export const meta = { … }` can be read without executing the
6
+ * script. Claude Code requires that literal to be pure ("no computed values") and parses it
7
+ * the same way; refusing anything computable here is what keeps a package this project
8
+ * accepts from being one the agent then rejects.
9
+ *
10
+ * Deliberately not a JSON parser: the source is JavaScript, so single quotes, unquoted keys,
11
+ * trailing commas and comments all appear in practice and all have to be understood.
12
+ */
13
+ export declare function parseJsLiteral(source: string, from: number, context: string): {
14
+ value: unknown;
15
+ end: number;
16
+ };
17
+ /**
18
+ * Advances past whitespace and comments, so callers can require a declaration to be the
19
+ * *first statement* without tripping over a licence header.
20
+ */
21
+ export declare function skipTrivia(source: string, from: number): number;
22
+ //# sourceMappingURL=js-literal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-literal.d.ts","sourceRoot":"","sources":["../../src/domain/js-literal.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAIjC;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAI/D"}
@@ -0,0 +1,221 @@
1
+ import { AgentSkillsError, ErrorCode } from "./errors.js";
2
+ /**
3
+ * A parser for JavaScript *literal* expressions — objects, arrays, strings, numbers,
4
+ * booleans and null. Nothing else: no identifiers, no operators, no function calls.
5
+ *
6
+ * It exists so a workflow's `export const meta = { … }` can be read without executing the
7
+ * script. Claude Code requires that literal to be pure ("no computed values") and parses it
8
+ * the same way; refusing anything computable here is what keeps a package this project
9
+ * accepts from being one the agent then rejects.
10
+ *
11
+ * Deliberately not a JSON parser: the source is JavaScript, so single quotes, unquoted keys,
12
+ * trailing commas and comments all appear in practice and all have to be understood.
13
+ */
14
+ export function parseJsLiteral(source, from, context) {
15
+ const cursor = { index: from };
16
+ const value = readValue(source, cursor, context);
17
+ return { value, end: cursor.index };
18
+ }
19
+ /**
20
+ * Advances past whitespace and comments, so callers can require a declaration to be the
21
+ * *first statement* without tripping over a licence header.
22
+ */
23
+ export function skipTrivia(source, from) {
24
+ const cursor = { index: from };
25
+ skipIgnorable(source, cursor);
26
+ return cursor.index;
27
+ }
28
+ function fail(source, cursor, context, what) {
29
+ const line = source.slice(0, cursor.index).split('\n').length;
30
+ throw new AgentSkillsError(ErrorCode.INVALID_PACKAGE, `${context}: ${what}`, {
31
+ details: [`At line ${line}.`],
32
+ hints: ['The value must be a literal: no variables, calls, operators or template strings'],
33
+ data: { context, line },
34
+ });
35
+ }
36
+ function skipIgnorable(source, cursor) {
37
+ for (;;) {
38
+ while (cursor.index < source.length && /\s/.test(source[cursor.index]))
39
+ cursor.index += 1;
40
+ if (source.startsWith('//', cursor.index)) {
41
+ const newline = source.indexOf('\n', cursor.index);
42
+ cursor.index = newline === -1 ? source.length : newline + 1;
43
+ continue;
44
+ }
45
+ if (source.startsWith('/*', cursor.index)) {
46
+ const close = source.indexOf('*/', cursor.index + 2);
47
+ cursor.index = close === -1 ? source.length : close + 2;
48
+ continue;
49
+ }
50
+ return;
51
+ }
52
+ }
53
+ function readValue(source, cursor, context) {
54
+ skipIgnorable(source, cursor);
55
+ if (cursor.index >= source.length)
56
+ fail(source, cursor, context, 'unexpected end of input');
57
+ const char = source[cursor.index];
58
+ if (char === '{')
59
+ return readObject(source, cursor, context);
60
+ if (char === '[')
61
+ return readArray(source, cursor, context);
62
+ if (char === "'" || char === '"')
63
+ return readString(source, cursor, context);
64
+ if (char === '`') {
65
+ fail(source, cursor, context, 'template strings are not allowed; use a quoted string');
66
+ }
67
+ for (const [word, literal] of [
68
+ ['true', true],
69
+ ['false', false],
70
+ ['null', null],
71
+ ]) {
72
+ if (source.startsWith(word, cursor.index) &&
73
+ !isIdentifierChar(source[cursor.index + word.length])) {
74
+ cursor.index += word.length;
75
+ return literal;
76
+ }
77
+ }
78
+ return readNumber(source, cursor, context);
79
+ }
80
+ function readObject(source, cursor, context) {
81
+ cursor.index += 1; // {
82
+ const result = {};
83
+ for (;;) {
84
+ skipIgnorable(source, cursor);
85
+ if (cursor.index >= source.length)
86
+ fail(source, cursor, context, 'unterminated object');
87
+ if (source[cursor.index] === '}') {
88
+ cursor.index += 1;
89
+ return result;
90
+ }
91
+ const key = readKey(source, cursor, context);
92
+ skipIgnorable(source, cursor);
93
+ if (source[cursor.index] !== ':') {
94
+ // Shorthand (`{ name }`) reads a variable, which is exactly what "pure literal" forbids.
95
+ fail(source, cursor, context, `property "${key}" has no value`);
96
+ }
97
+ cursor.index += 1;
98
+ result[key] = readValue(source, cursor, context);
99
+ skipIgnorable(source, cursor);
100
+ if (source[cursor.index] === ',') {
101
+ cursor.index += 1;
102
+ continue;
103
+ }
104
+ if (source[cursor.index] === '}') {
105
+ cursor.index += 1;
106
+ return result;
107
+ }
108
+ fail(source, cursor, context, 'expected "," or "}" after a property');
109
+ }
110
+ }
111
+ function readArray(source, cursor, context) {
112
+ cursor.index += 1; // [
113
+ const result = [];
114
+ for (;;) {
115
+ skipIgnorable(source, cursor);
116
+ if (cursor.index >= source.length)
117
+ fail(source, cursor, context, 'unterminated array');
118
+ if (source[cursor.index] === ']') {
119
+ cursor.index += 1;
120
+ return result;
121
+ }
122
+ result.push(readValue(source, cursor, context));
123
+ skipIgnorable(source, cursor);
124
+ if (source[cursor.index] === ',') {
125
+ cursor.index += 1;
126
+ continue;
127
+ }
128
+ if (source[cursor.index] === ']') {
129
+ cursor.index += 1;
130
+ return result;
131
+ }
132
+ fail(source, cursor, context, 'expected "," or "]" after an element');
133
+ }
134
+ }
135
+ function readKey(source, cursor, context) {
136
+ const char = source[cursor.index];
137
+ if (char === "'" || char === '"')
138
+ return readString(source, cursor, context);
139
+ const start = cursor.index;
140
+ while (cursor.index < source.length && isIdentifierChar(source[cursor.index]))
141
+ cursor.index += 1;
142
+ if (cursor.index === start)
143
+ fail(source, cursor, context, 'expected a property name');
144
+ return source.slice(start, cursor.index);
145
+ }
146
+ function readString(source, cursor, context) {
147
+ const quote = source[cursor.index];
148
+ cursor.index += 1;
149
+ let out = '';
150
+ while (cursor.index < source.length) {
151
+ const char = source[cursor.index];
152
+ if (char === '\\') {
153
+ const escaped = source[cursor.index + 1];
154
+ if (escaped === undefined)
155
+ break;
156
+ cursor.index += 2;
157
+ out += unescape(escaped, source, cursor, context);
158
+ continue;
159
+ }
160
+ if (char === quote) {
161
+ cursor.index += 1;
162
+ return out;
163
+ }
164
+ if (char === '\n')
165
+ fail(source, cursor, context, 'a string may not span lines');
166
+ out += char;
167
+ cursor.index += 1;
168
+ }
169
+ return fail(source, cursor, context, 'unterminated string');
170
+ }
171
+ const SIMPLE_ESCAPES = {
172
+ n: '\n',
173
+ t: '\t',
174
+ r: '\r',
175
+ b: '\b',
176
+ f: '\f',
177
+ v: '\v',
178
+ '0': '\0',
179
+ };
180
+ function unescape(escaped, source, cursor, context) {
181
+ if (escaped === 'u') {
182
+ // Both \uXXXX and \u{XXXX}; the code point is validated rather than trusted.
183
+ if (source[cursor.index] === '{') {
184
+ const close = source.indexOf('}', cursor.index);
185
+ if (close === -1)
186
+ fail(source, cursor, context, 'unterminated unicode escape');
187
+ const code = Number.parseInt(source.slice(cursor.index + 1, close), 16);
188
+ if (!Number.isFinite(code) || code > 0x10ffff) {
189
+ fail(source, cursor, context, 'invalid unicode escape');
190
+ }
191
+ cursor.index = close + 1;
192
+ return String.fromCodePoint(code);
193
+ }
194
+ const digits = source.slice(cursor.index, cursor.index + 4);
195
+ if (!/^[0-9a-fA-F]{4}$/.test(digits))
196
+ fail(source, cursor, context, 'invalid unicode escape');
197
+ cursor.index += 4;
198
+ return String.fromCharCode(Number.parseInt(digits, 16));
199
+ }
200
+ if (escaped === 'x') {
201
+ const digits = source.slice(cursor.index, cursor.index + 2);
202
+ if (!/^[0-9a-fA-F]{2}$/.test(digits))
203
+ fail(source, cursor, context, 'invalid hex escape');
204
+ cursor.index += 2;
205
+ return String.fromCharCode(Number.parseInt(digits, 16));
206
+ }
207
+ return SIMPLE_ESCAPES[escaped] ?? escaped;
208
+ }
209
+ function readNumber(source, cursor, context) {
210
+ const match = /^-?(?:0[xX][0-9a-fA-F]+|\d+(?:\.\d+)?(?:[eE][+-]?\d+)?|\.\d+(?:[eE][+-]?\d+)?)/.exec(source.slice(cursor.index));
211
+ if (match === null) {
212
+ const preview = source.slice(cursor.index, cursor.index + 20).split('\n')[0] ?? '';
213
+ fail(source, cursor, context, `expected a literal value, found "${preview}"`);
214
+ }
215
+ cursor.index += match[0].length;
216
+ return Number(match[0]);
217
+ }
218
+ function isIdentifierChar(char) {
219
+ return char !== undefined && /[A-Za-z0-9_$]/.test(char);
220
+ }
221
+ //# sourceMappingURL=js-literal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-literal.js","sourceRoot":"","sources":["../../src/domain/js-literal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { type SemanticVersion } from './version.ts';
2
+ import type { AgentId } from './agent.ts';
3
+ /**
4
+ * `skills.lock` makes a project install reproducible. It is written for project scope only:
5
+ * a user's global agent configuration is a mutable environment, not a build artefact.
6
+ */
7
+ export declare const LOCKFILE_NAME = "skills.lock";
8
+ export declare const CURRENT_LOCKFILE_VERSION = 1;
9
+ export interface LockedSkill {
10
+ readonly version: SemanticVersion;
11
+ /** Configured registry name the version came from. Pinning it defeats registry reordering. */
12
+ readonly registry: string;
13
+ /** Fully qualified location, for auditing and for offline diagnosis. */
14
+ readonly resolved: string;
15
+ readonly integrity: string;
16
+ readonly agents: readonly AgentId[];
17
+ /** Exact versions this skill's dependencies resolved to, for a readable diff. */
18
+ readonly dependencies: Readonly<Record<string, SemanticVersion>>;
19
+ }
20
+ export interface Lockfile {
21
+ readonly lockfileVersion: number;
22
+ readonly generatedWith?: string;
23
+ /** Sorted by name so diffs stay minimal and merge conflicts stay local. */
24
+ readonly skills: Readonly<Record<string, LockedSkill>>;
25
+ }
26
+ export declare function emptyLockfile(generatedWith?: string): Lockfile;
27
+ export declare function parseLockfile(text: string, source?: string): Lockfile;
28
+ export declare function stringifyLockfile(lock: Lockfile): string;
29
+ export declare function withSkill(lock: Lockfile, name: string, entry: LockedSkill): Lockfile;
30
+ export declare function withoutSkill(lock: Lockfile, name: string): Lockfile;
31
+ /**
32
+ * Guards against a registry serving different bytes for a version we have already pinned.
33
+ * A mismatch is a security event, not a cache-miss: it aborts rather than re-resolving.
34
+ */
35
+ export declare function assertIntegrityMatches(name: string, expected: string, actual: string, source?: string): void;
36
+ //# sourceMappingURL=lockfile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lockfile.d.ts","sourceRoot":"","sources":["../../src/domain/lockfile.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,aAAa,gBAAgB,CAAC;AAC3C,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,8FAA8F;IAC9F,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC;IACpC,iFAAiF;IACjF,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;CAClE;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;CACxD;AAED,wBAAgB,aAAa,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,CAM9D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAgB,GAAG,QAAQ,CA2D5E;AAsDD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAyBxD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,QAAQ,CAEpF;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAInE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,SAAgB,GACrB,IAAI,CAgBN"}