at-shared-types 1.2.6 → 1.2.8

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 (31) hide show
  1. package/dist/ai/protocol/ids.d.ts +0 -10
  2. package/dist/ai/protocol/ids.d.ts.map +1 -1
  3. package/dist/auth/auth.runtime.d.ts +6 -0
  4. package/dist/auth/auth.runtime.d.ts.map +1 -0
  5. package/dist/auth/domain/authSession.d.ts +21 -0
  6. package/dist/auth/domain/authSession.d.ts.map +1 -0
  7. package/dist/auth/index.d.ts +16 -0
  8. package/dist/auth/index.d.ts.map +1 -0
  9. package/dist/auth/providers/atplatform/atplatform.login.types.d.ts +9 -0
  10. package/dist/auth/providers/atplatform/atplatform.login.types.d.ts.map +1 -0
  11. package/dist/auth/providers/atplatform/atplatform.runtime.d.ts +6 -0
  12. package/dist/auth/providers/atplatform/atplatform.runtime.d.ts.map +1 -0
  13. package/dist/auth/providers/atplatform/atplatform.token.types.d.ts +9 -0
  14. package/dist/auth/providers/atplatform/atplatform.token.types.d.ts.map +1 -0
  15. package/dist/auth/providers/parto/parto.login.types.d.ts +28 -0
  16. package/dist/auth/providers/parto/parto.login.types.d.ts.map +1 -0
  17. package/dist/auth/providers/parto/parto.runtime.d.ts +6 -0
  18. package/dist/auth/providers/parto/parto.runtime.d.ts.map +1 -0
  19. package/dist/auth/providers/parto/parto.token.types.d.ts +13 -0
  20. package/dist/auth/providers/parto/parto.token.types.d.ts.map +1 -0
  21. package/dist/index.cjs +111 -0
  22. package/dist/index.cjs.map +1 -1
  23. package/dist/index.d.ts +1 -0
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.mjs +110 -0
  26. package/dist/index.mjs.map +1 -1
  27. package/dist/protocol.cjs +4 -13
  28. package/dist/protocol.cjs.map +1 -1
  29. package/dist/protocol.mjs +4 -13
  30. package/dist/protocol.mjs.map +1 -1
  31. package/package.json +1 -1
@@ -4,24 +4,14 @@ type Brand<T, B extends string> = T & {
4
4
  export type ATAICapabilityID = Brand<string, "ATAICapabilityID">;
5
5
  export type ATAIPromptID = Brand<string, "ATAIPromptID">;
6
6
  export declare const ATAIID: {
7
- /** Validate & brand an existing capability id (throws if invalid). */
8
7
  readonly validateCapability: (id: string) => ATAICapabilityID;
9
- /** Validate & brand an existing prompt id (throws if invalid). */
10
8
  readonly validatePrompt: (id: string) => ATAIPromptID;
11
- /**
12
- * Build a capability id from parts (then validates & brands).
13
- * Format: cap.<app>.<area>.<object>.<verb>
14
- */
15
9
  readonly makeCapability: (parts: {
16
10
  app: string;
17
11
  area: string;
18
12
  target: string;
19
13
  action: string;
20
14
  }) => ATAICapabilityID;
21
- /**
22
- * Build a prompt id from parts (then validates & brands).
23
- * Format: prompt.<app>.<area>.<object>.<verb>.v<major>
24
- */
25
15
  readonly makePrompt: (parts: {
26
16
  app: string;
27
17
  area: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../../src/ai/protocol/ids.ts"],"names":[],"mappings":"AAAA,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;CAAE,CAAC;AAE9D,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AACjE,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAoCzD,eAAO,MAAM,MAAM;IACf,sEAAsE;sCAC/C,MAAM,KAAG,gBAAgB;IAKhD,kEAAkE;kCAC/C,MAAM,KAAG,YAAY;IAKxC;;;OAGG;qCACmB;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAClB,KAAG,gBAAgB;IAKpB;;;OAGG;iCACe;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,CAAC,EAAE,MAAM,CAAC;KACb,KAAG,YAAY;CAKV,CAAC"}
1
+ {"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../../src/ai/protocol/ids.ts"],"names":[],"mappings":"AAAA,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;CAAE,CAAC;AAE9D,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AACjE,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAuCzD,eAAO,MAAM,MAAM;sCACQ,MAAM,KAAG,gBAAgB;kCAK7B,MAAM,KAAG,YAAY;qCAKlB;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAClB,KAAG,gBAAgB;iCAKF;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,CAAC,EAAE,MAAM,CAAC;KACb,KAAG,YAAY;CAKV,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { ATAuthProviderType, ATAuthSessionDTO } from "./domain/authSession";
2
+ export * from "./providers/parto/parto.runtime";
3
+ export * from "./providers/atplatform/atplatform.runtime";
4
+ export declare function mapSessionFromLogin(providerType: ATAuthProviderType, response: unknown): ATAuthSessionDTO;
5
+ export declare function mapSessionFromToken(providerType: ATAuthProviderType, payload: unknown, token: string): ATAuthSessionDTO;
6
+ //# sourceMappingURL=auth.runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.runtime.d.ts","sourceRoot":"","sources":["../../src/auth/auth.runtime.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE5E,cAAc,iCAAiC,CAAC;AAChD,cAAc,2CAA2C,CAAC;AAkB1D,wBAAgB,mBAAmB,CAC/B,YAAY,EAAE,kBAAkB,EAChC,QAAQ,EAAE,OAAO,GAClB,gBAAgB,CAOlB;AAED,wBAAgB,mBAAmB,CAC/B,YAAY,EAAE,kBAAkB,EAChC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,GACd,gBAAgB,CAOlB"}
@@ -0,0 +1,21 @@
1
+ export declare const ATAuthProviderTypes: readonly ["parto", "atplatform"];
2
+ export type ATAuthProviderType = typeof ATAuthProviderTypes[number];
3
+ export interface ATAuthUserDTO {
4
+ userID: string;
5
+ username?: string;
6
+ email?: string;
7
+ firstName?: string;
8
+ lastName?: string;
9
+ avatar?: string;
10
+ permissions?: string[];
11
+ }
12
+ export interface ATAuthSessionDTO {
13
+ token: string;
14
+ refreshToken?: string;
15
+ expiresAt?: number;
16
+ iss?: string;
17
+ providerType: ATAuthProviderType;
18
+ user: ATAuthUserDTO;
19
+ meta?: Record<string, unknown>;
20
+ }
21
+ //# sourceMappingURL=authSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authSession.d.ts","sourceRoot":"","sources":["../../../src/auth/domain/authSession.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,kCAAmC,CAAC;AACpE,MAAM,MAAM,kBAAkB,GAAG,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,MAAM,CAAC;IAEf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,MAAM,CAAC;IAEd,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,YAAY,EAAE,kBAAkB,CAAC;IAEjC,IAAI,EAAE,aAAa,CAAC;IAGpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC"}
@@ -0,0 +1,16 @@
1
+ export * from "./domain/authSession";
2
+ export * from "./auth.runtime";
3
+ import * as CoreTypes from "./domain/authSession";
4
+ import * as Runtime from "./auth.runtime";
5
+ export declare namespace Types {
6
+ type ATAuthProviderType = CoreTypes.ATAuthProviderType;
7
+ type ATAuthUserDTO = CoreTypes.ATAuthUserDTO;
8
+ type ATAuthSessionDTO = CoreTypes.ATAuthSessionDTO;
9
+ type ATPlatformLoginResponseDTO = import("./providers/atplatform/atplatform.login.types").ATPlatformLoginResponseDTO;
10
+ type ATPlatformAccessTokenPayloadDTO = import("./providers/atplatform/atplatform.token.types").ATPlatformAccessTokenPayloadDTO;
11
+ type PartoUserInfoDTO = import("./providers/parto/parto.login.types").PartoUserInfoDTO;
12
+ type PartoLoginResponseDTO = import("./providers/parto/parto.login.types").PartoLoginResponseDTO;
13
+ type PartoAccessTokenPayloadDTO = import("./providers/parto/parto.token.types").PartoAccessTokenPayloadDTO;
14
+ }
15
+ export { Runtime };
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AACA,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAE/B,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAG1C,yBAAiB,KAAK,CAAC;IAEnB,KAAY,kBAAkB,GAAG,SAAS,CAAC,kBAAkB,CAAC;IAC9D,KAAY,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;IACpD,KAAY,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC;IAG1D,KAAY,0BAA0B,GAAG,OAAO,+CAA+C,EAAE,0BAA0B,CAAC;IAC5H,KAAY,+BAA+B,GAAG,OAAO,+CAA+C,EAAE,+BAA+B,CAAC;IAGtI,KAAY,gBAAgB,GAAG,OAAO,qCAAqC,EAAE,gBAAgB,CAAC;IAC9F,KAAY,qBAAqB,GAAG,OAAO,qCAAqC,EAAE,qBAAqB,CAAC;IACxG,KAAY,0BAA0B,GAAG,OAAO,qCAAqC,EAAE,0BAA0B,CAAC;CACrH;AAGD,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ export interface ATPlatformLoginResponseDTO {
2
+ token: string;
3
+ refresh_token: string;
4
+ user_id: number;
5
+ username: string;
6
+ first_name: string;
7
+ last_name: string;
8
+ }
9
+ //# sourceMappingURL=atplatform.login.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atplatform.login.types.d.ts","sourceRoot":"","sources":["../../../../src/auth/providers/atplatform/atplatform.login.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,0BAA0B;IACvC,KAAK,EAAE,MAAM,CAAC;IAEd,aAAa,EAAE,MAAM,CAAC;IAEtB,OAAO,EAAE,MAAM,CAAC;IAEhB,QAAQ,EAAE,MAAM,CAAC;IAEjB,UAAU,EAAE,MAAM,CAAC;IAEnB,SAAS,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,6 @@
1
+ import { ATAuthSessionDTO } from "../../domain/authSession";
2
+ import { ATPlatformLoginResponseDTO } from "./atplatform.login.types";
3
+ import { ATPlatformAccessTokenPayloadDTO } from "./atplatform.token.types";
4
+ export declare function mapATPlatformSessionFromLogin(response: ATPlatformLoginResponseDTO): ATAuthSessionDTO;
5
+ export declare function mapATPlatformSessionFromToken(payload: ATPlatformAccessTokenPayloadDTO, token: string): ATAuthSessionDTO;
6
+ //# sourceMappingURL=atplatform.runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atplatform.runtime.d.ts","sourceRoot":"","sources":["../../../../src/auth/providers/atplatform/atplatform.runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAE3E,wBAAgB,6BAA6B,CACzC,QAAQ,EAAE,0BAA0B,GACrC,gBAAgB,CAYlB;AAED,wBAAgB,6BAA6B,CACzC,OAAO,EAAE,+BAA+B,EACxC,KAAK,EAAE,MAAM,GACd,gBAAgB,CAUlB"}
@@ -0,0 +1,9 @@
1
+ export interface ATPlatformAccessTokenPayloadDTO {
2
+ sub: string;
3
+ sid: string;
4
+ iss: string;
5
+ aud: string;
6
+ iat: number;
7
+ exp: number;
8
+ }
9
+ //# sourceMappingURL=atplatform.token.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atplatform.token.types.d.ts","sourceRoot":"","sources":["../../../../src/auth/providers/atplatform/atplatform.token.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,+BAA+B;IAE5C,GAAG,EAAE,MAAM,CAAC;IAEZ,GAAG,EAAE,MAAM,CAAC;IAEZ,GAAG,EAAE,MAAM,CAAC;IAEZ,GAAG,EAAE,MAAM,CAAC;IAEZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,28 @@
1
+ export interface PartoUserInfoDTO {
2
+ ID: number;
3
+ userName: string;
4
+ firstName: string;
5
+ lastName: string;
6
+ isAgent: boolean;
7
+ birthdate: string;
8
+ businessTypeID: number;
9
+ companyName: string | null;
10
+ customerID: number | null;
11
+ department: string | null;
12
+ directPhone: string | null;
13
+ enabled: boolean;
14
+ factionsJson: string | null;
15
+ genderId: number;
16
+ internalPhone: string | null;
17
+ loginEnabled: boolean;
18
+ nationalCode: string | null;
19
+ offices: unknown;
20
+ phone: string | null;
21
+ roles: unknown;
22
+ }
23
+ export interface PartoLoginResponseDTO {
24
+ token: string;
25
+ refreshToken: string;
26
+ userInfo: PartoUserInfoDTO;
27
+ }
28
+ //# sourceMappingURL=parto.login.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parto.login.types.d.ts","sourceRoot":"","sources":["../../../../src/auth/providers/parto/parto.login.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAC;IAEX,QAAQ,EAAE,MAAM,CAAC;IAEjB,SAAS,EAAE,MAAM,CAAC;IAElB,QAAQ,EAAE,MAAM,CAAC;IAEjB,OAAO,EAAE,OAAO,CAAC;IAEjB,SAAS,EAAE,MAAM,CAAC;IAElB,cAAc,EAAE,MAAM,CAAC;IAEvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,OAAO,EAAE,OAAO,CAAC;IAEjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B,QAAQ,EAAE,MAAM,CAAC;IAEjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B,YAAY,EAAE,OAAO,CAAC;IAEtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B,OAAO,EAAE,OAAO,CAAC;IAEjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,KAAK,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IAClC,KAAK,EAAE,MAAM,CAAC;IAEd,YAAY,EAAE,MAAM,CAAC;IAErB,QAAQ,EAAE,gBAAgB,CAAC;CAC9B"}
@@ -0,0 +1,6 @@
1
+ import { ATAuthSessionDTO } from "../../domain/authSession";
2
+ import { PartoLoginResponseDTO } from "./parto.login.types";
3
+ import { PartoAccessTokenPayloadDTO } from "./parto.token.types";
4
+ export declare function mapPartoSessionFromLogin(response: PartoLoginResponseDTO): ATAuthSessionDTO;
5
+ export declare function mapPartoSessionFromToken(payload: PartoAccessTokenPayloadDTO, token: string): ATAuthSessionDTO;
6
+ //# sourceMappingURL=parto.runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parto.runtime.d.ts","sourceRoot":"","sources":["../../../../src/auth/providers/parto/parto.runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAEjE,wBAAgB,wBAAwB,CACpC,QAAQ,EAAE,qBAAqB,GAChC,gBAAgB,CAmBlB;AAED,wBAAgB,wBAAwB,CACpC,OAAO,EAAE,0BAA0B,EACnC,KAAK,EAAE,MAAM,GACd,gBAAgB,CAYlB"}
@@ -0,0 +1,13 @@
1
+ export interface PartoAccessTokenPayloadDTO {
2
+ aud: string;
3
+ iss: string;
4
+ sub?: string;
5
+ ID: string;
6
+ CUSTOMERID?: string;
7
+ PERMISSIONS?: string;
8
+ unique_name?: string;
9
+ exp: number;
10
+ iat: number;
11
+ nbf?: number;
12
+ }
13
+ //# sourceMappingURL=parto.token.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parto.token.types.d.ts","sourceRoot":"","sources":["../../../../src/auth/providers/parto/parto.token.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,0BAA0B;IACvC,GAAG,EAAE,MAAM,CAAC;IAEZ,GAAG,EAAE,MAAM,CAAC;IAEZ,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,EAAE,EAAE,MAAM,CAAC;IAEX,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,GAAG,EAAE,MAAM,CAAC;IAEZ,GAAG,EAAE,MAAM,CAAC;IAEZ,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB"}
package/dist/index.cjs CHANGED
@@ -20,6 +20,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var src_exports = {};
22
22
  __export(src_exports, {
23
+ ATAuth: () => auth_exports,
23
24
  ATCasing: () => casing_exports
24
25
  });
25
26
  module.exports = __toCommonJS(src_exports);
@@ -76,8 +77,118 @@ function toCamelDeep(value) {
76
77
  }
77
78
  return value;
78
79
  }
80
+
81
+ // src/auth/index.ts
82
+ var auth_exports = {};
83
+ __export(auth_exports, {
84
+ ATAuthProviderTypes: () => ATAuthProviderTypes,
85
+ Runtime: () => auth_runtime_exports,
86
+ mapATPlatformSessionFromLogin: () => mapATPlatformSessionFromLogin,
87
+ mapATPlatformSessionFromToken: () => mapATPlatformSessionFromToken,
88
+ mapPartoSessionFromLogin: () => mapPartoSessionFromLogin,
89
+ mapPartoSessionFromToken: () => mapPartoSessionFromToken,
90
+ mapSessionFromLogin: () => mapSessionFromLogin,
91
+ mapSessionFromToken: () => mapSessionFromToken
92
+ });
93
+
94
+ // src/auth/domain/authSession.ts
95
+ var ATAuthProviderTypes = ["parto", "atplatform"];
96
+
97
+ // src/auth/auth.runtime.ts
98
+ var auth_runtime_exports = {};
99
+ __export(auth_runtime_exports, {
100
+ mapATPlatformSessionFromLogin: () => mapATPlatformSessionFromLogin,
101
+ mapATPlatformSessionFromToken: () => mapATPlatformSessionFromToken,
102
+ mapPartoSessionFromLogin: () => mapPartoSessionFromLogin,
103
+ mapPartoSessionFromToken: () => mapPartoSessionFromToken,
104
+ mapSessionFromLogin: () => mapSessionFromLogin,
105
+ mapSessionFromToken: () => mapSessionFromToken
106
+ });
107
+
108
+ // src/auth/providers/parto/parto.runtime.ts
109
+ function mapPartoSessionFromLogin(response) {
110
+ const user = response.userInfo;
111
+ return {
112
+ token: response.token,
113
+ refreshToken: response.refreshToken,
114
+ providerType: "parto",
115
+ user: {
116
+ userID: String(user.ID),
117
+ username: user.userName,
118
+ firstName: user.firstName,
119
+ lastName: user.lastName
120
+ },
121
+ meta: {
122
+ department: user.department,
123
+ companyName: user.companyName,
124
+ businessTypeID: user.businessTypeID
125
+ }
126
+ };
127
+ }
128
+ function mapPartoSessionFromToken(payload, token) {
129
+ return {
130
+ token,
131
+ expiresAt: payload.exp,
132
+ providerType: "parto",
133
+ iss: payload.iss,
134
+ user: {
135
+ userID: payload.ID,
136
+ username: payload.unique_name,
137
+ permissions: payload.PERMISSIONS?.split(",")
138
+ }
139
+ };
140
+ }
141
+
142
+ // src/auth/providers/atplatform/atplatform.runtime.ts
143
+ function mapATPlatformSessionFromLogin(response) {
144
+ return {
145
+ token: response.token,
146
+ refreshToken: response.refresh_token,
147
+ providerType: "atplatform",
148
+ user: {
149
+ userID: String(response.user_id),
150
+ username: response.username,
151
+ firstName: response.first_name,
152
+ lastName: response.last_name
153
+ }
154
+ };
155
+ }
156
+ function mapATPlatformSessionFromToken(payload, token) {
157
+ return {
158
+ token,
159
+ expiresAt: payload.exp,
160
+ iss: payload.iss,
161
+ providerType: "atplatform",
162
+ user: {
163
+ userID: payload.sub
164
+ }
165
+ };
166
+ }
167
+
168
+ // src/auth/auth.runtime.ts
169
+ var mapSessionFromLoginByProvider = {
170
+ atplatform: mapATPlatformSessionFromLogin,
171
+ parto: mapPartoSessionFromLogin
172
+ };
173
+ var mapSessionFromTokenByProvider = {
174
+ atplatform: mapATPlatformSessionFromToken,
175
+ parto: mapPartoSessionFromToken
176
+ };
177
+ function mapSessionFromLogin(providerType, response) {
178
+ const mapper = mapSessionFromLoginByProvider[providerType];
179
+ if (!mapper)
180
+ throw new Error(`Unsupported provider type: ${providerType}`);
181
+ return mapper(response);
182
+ }
183
+ function mapSessionFromToken(providerType, payload, token) {
184
+ const mapper = mapSessionFromTokenByProvider[providerType];
185
+ if (!mapper)
186
+ throw new Error(`Unsupported provider type: ${providerType}`);
187
+ return mapper(payload, token);
188
+ }
79
189
  // Annotate the CommonJS export names for ESM import in node:
80
190
  0 && (module.exports = {
191
+ ATAuth,
81
192
  ATCasing
82
193
  });
83
194
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/casing/index.ts","../src/casing/case.types.ts","../src/casing/case.runtime.ts"],"sourcesContent":["export * as ATCasing from \"./casing\";\r\n\r\n","// src/casing/index.ts\r\nexport * from \"./case.types\";\r\nexport * from \"./case.runtime\";\r\n\r\n// (optional) if you still like namespaces, keep them too:\r\nimport * as Types from \"./case.types\";\r\nimport * as Runtime from \"./case.runtime\";\r\nexport { Types, Runtime };\r\n","type FixAcronyms<S extends string> =\r\n S extends `${infer A}ID${infer B}` ? FixAcronyms<`${A}Id${B}`> : S;\r\n\r\nexport type SnakeCase<S extends string> =\r\n S extends `${infer H}${infer T}`\r\n ? T extends Uncapitalize<T>\r\n ? `${Lowercase<H>}${SnakeCase<T>}`\r\n : `${Lowercase<H>}_${SnakeCase<Uncapitalize<T>>}`\r\n : S;\r\n\r\nexport type CamelCase<S extends string> =\r\n S extends `${infer A}_${infer B}`\r\n ? `${A}${Capitalize<CamelCase<B>>}`\r\n : S;\r\n\r\ntype Primitive = string | number | boolean | bigint | symbol | null | undefined;\r\ntype Builtin = Primitive | Date | RegExp | Error;\r\n\r\nexport type DeepSnakeKeys<T> =\r\n T extends Builtin ? T :\r\n T extends (...args: any[]) => any ? T :\r\n T extends readonly [any, ...any[]]\r\n ? { [I in keyof T]: DeepSnakeKeys<T[I]> } :\r\n T extends ReadonlyArray<infer U>\r\n ? ReadonlyArray<DeepSnakeKeys<U>> :\r\n T extends Map<infer K, infer V>\r\n ? Map<DeepSnakeKeys<K>, DeepSnakeKeys<V>> :\r\n T extends Set<infer U>\r\n ? Set<DeepSnakeKeys<U>> :\r\n T extends object\r\n ? {\r\n [K in keyof T as K extends string\r\n ? SnakeCase<FixAcronyms<K>>\r\n : K\r\n ]: DeepSnakeKeys<T[K]>\r\n }\r\n : T;\r\n\r\nexport type DeepCamelKeys<T> =\r\n T extends Builtin ? T :\r\n T extends (...args: any[]) => any ? T :\r\n T extends readonly [any, ...any[]]\r\n ? { [I in keyof T]: DeepCamelKeys<T[I]> } :\r\n T extends ReadonlyArray<infer U>\r\n ? ReadonlyArray<DeepCamelKeys<U>> :\r\n T extends Map<infer K, infer V>\r\n ? Map<DeepCamelKeys<K>, DeepCamelKeys<V>> :\r\n T extends Set<infer U>\r\n ? Set<DeepCamelKeys<U>> :\r\n T extends object\r\n ? { [K in keyof T as K extends string ? CamelCase<K> : K]: DeepCamelKeys<T[K]> }\r\n : T;\r\n","const CAMEL_TO_SNAKE = /[A-Z]/g;\r\nconst SNAKE_TO_CAMEL = /_([a-z])/g;\r\n\r\n// Normalize common acronyms before snake conversion\r\nconst normalizeAcronyms = (k: string) => k.replace(/ID/g, \"Id\");\r\n\r\nexport const toSnakeKey = (k: string) =>\r\n normalizeAcronyms(k).replace(CAMEL_TO_SNAKE, m => `_${m.toLowerCase()}`);\r\n\r\nexport const toCamelKey = (k: string) =>\r\n k.replace(SNAKE_TO_CAMEL, (_, c) => c.toUpperCase());\r\n\r\nexport function toSnakeDeep<T>(value: T, exceptions = new Set<string>()): any {\r\n if (Array.isArray(value)) return value.map(v => toSnakeDeep(v, exceptions));\r\n if (value instanceof Date) return value;\r\n if (value && typeof value === \"object\") {\r\n const out: Record<string, any> = {};\r\n for (const [k, v] of Object.entries(value as any)) {\r\n const nk = exceptions.has(k) ? k : toSnakeKey(k);\r\n out[nk] = toSnakeDeep(v, exceptions);\r\n }\r\n return out;\r\n }\r\n return value;\r\n}\r\n\r\nexport function toCamelDeep<T>(value: T): any {\r\n if (Array.isArray(value)) return value.map(toCamelDeep);\r\n if (value instanceof Date) return value;\r\n if (value && typeof value === \"object\") {\r\n const out: Record<string, any> = {};\r\n for (const [k, v] of Object.entries(value as any)) {\r\n out[toCamelKey(k)] = toCamelDeep(v);\r\n }\r\n return out;\r\n }\r\n return value;\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAM,iBAAiB;AACvB,IAAM,iBAAiB;AAGvB,IAAM,oBAAoB,CAAC,MAAc,EAAE,QAAQ,OAAO,IAAI;AAEvD,IAAM,aAAa,CAAC,MACvB,kBAAkB,CAAC,EAAE,QAAQ,gBAAgB,OAAK,IAAI,EAAE,YAAY,CAAC,EAAE;AAEpE,IAAM,aAAa,CAAC,MACvB,EAAE,QAAQ,gBAAgB,CAAC,GAAG,MAAM,EAAE,YAAY,CAAC;AAEhD,SAAS,YAAe,OAAU,aAAa,oBAAI,IAAY,GAAQ;AAC1E,MAAI,MAAM,QAAQ,KAAK,EAAG,QAAO,MAAM,IAAI,OAAK,YAAY,GAAG,UAAU,CAAC;AAC1E,MAAI,iBAAiB,KAAM,QAAO;AAClC,MAAI,SAAS,OAAO,UAAU,UAAU;AACpC,UAAM,MAA2B,CAAC;AAClC,eAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,KAAY,GAAG;AAC/C,YAAM,KAAK,WAAW,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;AAC/C,UAAI,EAAE,IAAI,YAAY,GAAG,UAAU;AAAA,IACvC;AACA,WAAO;AAAA,EACX;AACA,SAAO;AACX;AAEO,SAAS,YAAe,OAAe;AAC1C,MAAI,MAAM,QAAQ,KAAK,EAAG,QAAO,MAAM,IAAI,WAAW;AACtD,MAAI,iBAAiB,KAAM,QAAO;AAClC,MAAI,SAAS,OAAO,UAAU,UAAU;AACpC,UAAM,MAA2B,CAAC;AAClC,eAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,KAAY,GAAG;AAC/C,UAAI,WAAW,CAAC,CAAC,IAAI,YAAY,CAAC;AAAA,IACtC;AACA,WAAO;AAAA,EACX;AACA,SAAO;AACX;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/casing/index.ts","../src/casing/case.types.ts","../src/casing/case.runtime.ts","../src/auth/index.ts","../src/auth/domain/authSession.ts","../src/auth/auth.runtime.ts","../src/auth/providers/parto/parto.runtime.ts","../src/auth/providers/atplatform/atplatform.runtime.ts"],"sourcesContent":["export * as ATCasing from \"./casing\";\r\nexport * as ATAuth from \"./auth\";","// src/casing/index.ts\r\nexport * from \"./case.types\";\r\nexport * from \"./case.runtime\";\r\n\r\n// (optional) if you still like namespaces, keep them too:\r\nimport * as Types from \"./case.types\";\r\nimport * as Runtime from \"./case.runtime\";\r\nexport { Types, Runtime };\r\n","type FixAcronyms<S extends string> =\r\n S extends `${infer A}ID${infer B}` ? FixAcronyms<`${A}Id${B}`> : S;\r\n\r\nexport type SnakeCase<S extends string> =\r\n S extends `${infer H}${infer T}`\r\n ? T extends Uncapitalize<T>\r\n ? `${Lowercase<H>}${SnakeCase<T>}`\r\n : `${Lowercase<H>}_${SnakeCase<Uncapitalize<T>>}`\r\n : S;\r\n\r\nexport type CamelCase<S extends string> =\r\n S extends `${infer A}_${infer B}`\r\n ? `${A}${Capitalize<CamelCase<B>>}`\r\n : S;\r\n\r\ntype Primitive = string | number | boolean | bigint | symbol | null | undefined;\r\ntype Builtin = Primitive | Date | RegExp | Error;\r\n\r\nexport type DeepSnakeKeys<T> =\r\n T extends Builtin ? T :\r\n T extends (...args: any[]) => any ? T :\r\n T extends readonly [any, ...any[]]\r\n ? { [I in keyof T]: DeepSnakeKeys<T[I]> } :\r\n T extends ReadonlyArray<infer U>\r\n ? ReadonlyArray<DeepSnakeKeys<U>> :\r\n T extends Map<infer K, infer V>\r\n ? Map<DeepSnakeKeys<K>, DeepSnakeKeys<V>> :\r\n T extends Set<infer U>\r\n ? Set<DeepSnakeKeys<U>> :\r\n T extends object\r\n ? {\r\n [K in keyof T as K extends string\r\n ? SnakeCase<FixAcronyms<K>>\r\n : K\r\n ]: DeepSnakeKeys<T[K]>\r\n }\r\n : T;\r\n\r\nexport type DeepCamelKeys<T> =\r\n T extends Builtin ? T :\r\n T extends (...args: any[]) => any ? T :\r\n T extends readonly [any, ...any[]]\r\n ? { [I in keyof T]: DeepCamelKeys<T[I]> } :\r\n T extends ReadonlyArray<infer U>\r\n ? ReadonlyArray<DeepCamelKeys<U>> :\r\n T extends Map<infer K, infer V>\r\n ? Map<DeepCamelKeys<K>, DeepCamelKeys<V>> :\r\n T extends Set<infer U>\r\n ? Set<DeepCamelKeys<U>> :\r\n T extends object\r\n ? { [K in keyof T as K extends string ? CamelCase<K> : K]: DeepCamelKeys<T[K]> }\r\n : T;\r\n","const CAMEL_TO_SNAKE = /[A-Z]/g;\r\nconst SNAKE_TO_CAMEL = /_([a-z])/g;\r\n\r\n// Normalize common acronyms before snake conversion\r\nconst normalizeAcronyms = (k: string) => k.replace(/ID/g, \"Id\");\r\n\r\nexport const toSnakeKey = (k: string) =>\r\n normalizeAcronyms(k).replace(CAMEL_TO_SNAKE, m => `_${m.toLowerCase()}`);\r\n\r\nexport const toCamelKey = (k: string) =>\r\n k.replace(SNAKE_TO_CAMEL, (_, c) => c.toUpperCase());\r\n\r\nexport function toSnakeDeep<T>(value: T, exceptions = new Set<string>()): any {\r\n if (Array.isArray(value)) return value.map(v => toSnakeDeep(v, exceptions));\r\n if (value instanceof Date) return value;\r\n if (value && typeof value === \"object\") {\r\n const out: Record<string, any> = {};\r\n for (const [k, v] of Object.entries(value as any)) {\r\n const nk = exceptions.has(k) ? k : toSnakeKey(k);\r\n out[nk] = toSnakeDeep(v, exceptions);\r\n }\r\n return out;\r\n }\r\n return value;\r\n}\r\n\r\nexport function toCamelDeep<T>(value: T): any {\r\n if (Array.isArray(value)) return value.map(toCamelDeep);\r\n if (value instanceof Date) return value;\r\n if (value && typeof value === \"object\") {\r\n const out: Record<string, any> = {};\r\n for (const [k, v] of Object.entries(value as any)) {\r\n out[toCamelKey(k)] = toCamelDeep(v);\r\n }\r\n return out;\r\n }\r\n return value;\r\n}\r\n","// Export core auth models & runtime functions\r\nexport * from \"./domain/authSession\";\r\nexport * from \"./auth.runtime\";\r\n\r\nimport * as CoreTypes from \"./domain/authSession\";\r\nimport * as Runtime from \"./auth.runtime\";\r\n\r\n// Exported namespace grouping all domain, session, and provider-specific types\r\nexport namespace Types {\r\n // Core session types\r\n export type ATAuthProviderType = CoreTypes.ATAuthProviderType;\r\n export type ATAuthUserDTO = CoreTypes.ATAuthUserDTO;\r\n export type ATAuthSessionDTO = CoreTypes.ATAuthSessionDTO;\r\n\r\n // ATPlatform Types\r\n export type ATPlatformLoginResponseDTO = import(\"./providers/atplatform/atplatform.login.types\").ATPlatformLoginResponseDTO;\r\n export type ATPlatformAccessTokenPayloadDTO = import(\"./providers/atplatform/atplatform.token.types\").ATPlatformAccessTokenPayloadDTO;\r\n\r\n // Parto Types\r\n export type PartoUserInfoDTO = import(\"./providers/parto/parto.login.types\").PartoUserInfoDTO;\r\n export type PartoLoginResponseDTO = import(\"./providers/parto/parto.login.types\").PartoLoginResponseDTO;\r\n export type PartoAccessTokenPayloadDTO = import(\"./providers/parto/parto.token.types\").PartoAccessTokenPayloadDTO;\r\n}\r\n\r\n// Export runtime under a clean namespace\r\nexport { Runtime };\r\n","export const ATAuthProviderTypes = [\"parto\", \"atplatform\"] as const;\r\nexport type ATAuthProviderType = typeof ATAuthProviderTypes[number];\r\n\r\nexport interface ATAuthUserDTO {\r\n userID: string;\r\n\r\n username?: string;\r\n\r\n email?: string;\r\n\r\n firstName?: string;\r\n\r\n lastName?: string;\r\n\r\n avatar?: string;\r\n\r\n permissions?: string[];\r\n}\r\n\r\nexport interface ATAuthSessionDTO {\r\n token: string;\r\n\r\n refreshToken?: string;\r\n\r\n expiresAt?: number;\r\n\r\n iss?: string;\r\n\r\n providerType: ATAuthProviderType;\r\n\r\n user: ATAuthUserDTO;\r\n\r\n //issuer junks \r\n meta?: Record<string, unknown>;\r\n}\r\n","import {\r\n mapPartoSessionFromLogin,\r\n mapPartoSessionFromToken,\r\n} from \"./providers/parto/parto.runtime\";\r\n\r\nimport {\r\n mapATPlatformSessionFromLogin,\r\n mapATPlatformSessionFromToken,\r\n} from \"./providers/atplatform/atplatform.runtime\";\r\n\r\nimport { ATAuthProviderType, ATAuthSessionDTO } from \"./domain/authSession\";\r\n\r\nexport * from \"./providers/parto/parto.runtime\";\r\nexport * from \"./providers/atplatform/atplatform.runtime\";\r\n\r\nconst mapSessionFromLoginByProvider: Record<\r\n ATAuthProviderType,\r\n (response: any) => ATAuthSessionDTO\r\n> = {\r\n atplatform: mapATPlatformSessionFromLogin,\r\n parto: mapPartoSessionFromLogin,\r\n};\r\n\r\nconst mapSessionFromTokenByProvider: Record<\r\n ATAuthProviderType,\r\n (payload: any, token: string) => ATAuthSessionDTO\r\n> = {\r\n atplatform: mapATPlatformSessionFromToken,\r\n parto: mapPartoSessionFromToken,\r\n};\r\n\r\nexport function mapSessionFromLogin(\r\n providerType: ATAuthProviderType,\r\n response: unknown,\r\n): ATAuthSessionDTO {\r\n const mapper = mapSessionFromLoginByProvider[providerType];\r\n\r\n if (!mapper)\r\n throw new Error(`Unsupported provider type: ${providerType}`);\r\n\r\n return mapper(response);\r\n}\r\n\r\nexport function mapSessionFromToken(\r\n providerType: ATAuthProviderType,\r\n payload: unknown,\r\n token: string\r\n): ATAuthSessionDTO {\r\n const mapper = mapSessionFromTokenByProvider[providerType];\r\n\r\n if (!mapper)\r\n throw new Error(`Unsupported provider type: ${providerType}`);\r\n\r\n return mapper(payload, token);\r\n}\r\n\r\n","import { ATAuthSessionDTO } from \"../../domain/authSession\";\r\nimport { PartoLoginResponseDTO } from \"./parto.login.types\";\r\nimport { PartoAccessTokenPayloadDTO } from \"./parto.token.types\";\r\n\r\nexport function mapPartoSessionFromLogin(\r\n response: PartoLoginResponseDTO\r\n): ATAuthSessionDTO {\r\n const user = response.userInfo;\r\n\r\n return {\r\n token: response.token,\r\n refreshToken: response.refreshToken,\r\n providerType: 'parto',\r\n user: {\r\n userID: String(user.ID),\r\n username: user.userName,\r\n firstName: user.firstName,\r\n lastName: user.lastName\r\n },\r\n meta: {\r\n department: user.department,\r\n companyName: user.companyName,\r\n businessTypeID: user.businessTypeID\r\n }\r\n };\r\n}\r\n\r\nexport function mapPartoSessionFromToken(\r\n payload: PartoAccessTokenPayloadDTO,\r\n token: string\r\n): ATAuthSessionDTO {\r\n return {\r\n token,\r\n expiresAt: payload.exp,\r\n providerType: 'parto',\r\n iss: payload.iss,\r\n user: {\r\n userID: payload.ID,\r\n username: payload.unique_name,\r\n permissions: payload.PERMISSIONS?.split(\",\")\r\n }\r\n };\r\n}\r\n","import { ATAuthSessionDTO } from \"../../domain/authSession\";\r\nimport { ATPlatformLoginResponseDTO } from \"./atplatform.login.types\";\r\nimport { ATPlatformAccessTokenPayloadDTO } from \"./atplatform.token.types\";\r\n\r\nexport function mapATPlatformSessionFromLogin(\r\n response: ATPlatformLoginResponseDTO\r\n): ATAuthSessionDTO {\r\n return {\r\n token: response.token,\r\n refreshToken: response.refresh_token,\r\n providerType: 'atplatform',\r\n user: {\r\n userID: String(response.user_id),\r\n username: response.username,\r\n firstName: response.first_name,\r\n lastName: response.last_name\r\n }\r\n };\r\n}\r\n\r\nexport function mapATPlatformSessionFromToken(\r\n payload: ATPlatformAccessTokenPayloadDTO,\r\n token: string\r\n): ATAuthSessionDTO {\r\n return {\r\n token,\r\n expiresAt: payload.exp,\r\n iss: payload.iss,\r\n providerType: 'atplatform',\r\n user: {\r\n userID: payload.sub\r\n }\r\n };\r\n}\r\n"],"mappings":"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","names":[]}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export * as ATCasing from "./casing";
2
+ export * as ATAuth from "./auth";
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC"}
package/dist/index.mjs CHANGED
@@ -54,7 +54,117 @@ function toCamelDeep(value) {
54
54
  }
55
55
  return value;
56
56
  }
57
+
58
+ // src/auth/index.ts
59
+ var auth_exports = {};
60
+ __export(auth_exports, {
61
+ ATAuthProviderTypes: () => ATAuthProviderTypes,
62
+ Runtime: () => auth_runtime_exports,
63
+ mapATPlatformSessionFromLogin: () => mapATPlatformSessionFromLogin,
64
+ mapATPlatformSessionFromToken: () => mapATPlatformSessionFromToken,
65
+ mapPartoSessionFromLogin: () => mapPartoSessionFromLogin,
66
+ mapPartoSessionFromToken: () => mapPartoSessionFromToken,
67
+ mapSessionFromLogin: () => mapSessionFromLogin,
68
+ mapSessionFromToken: () => mapSessionFromToken
69
+ });
70
+
71
+ // src/auth/domain/authSession.ts
72
+ var ATAuthProviderTypes = ["parto", "atplatform"];
73
+
74
+ // src/auth/auth.runtime.ts
75
+ var auth_runtime_exports = {};
76
+ __export(auth_runtime_exports, {
77
+ mapATPlatformSessionFromLogin: () => mapATPlatformSessionFromLogin,
78
+ mapATPlatformSessionFromToken: () => mapATPlatformSessionFromToken,
79
+ mapPartoSessionFromLogin: () => mapPartoSessionFromLogin,
80
+ mapPartoSessionFromToken: () => mapPartoSessionFromToken,
81
+ mapSessionFromLogin: () => mapSessionFromLogin,
82
+ mapSessionFromToken: () => mapSessionFromToken
83
+ });
84
+
85
+ // src/auth/providers/parto/parto.runtime.ts
86
+ function mapPartoSessionFromLogin(response) {
87
+ const user = response.userInfo;
88
+ return {
89
+ token: response.token,
90
+ refreshToken: response.refreshToken,
91
+ providerType: "parto",
92
+ user: {
93
+ userID: String(user.ID),
94
+ username: user.userName,
95
+ firstName: user.firstName,
96
+ lastName: user.lastName
97
+ },
98
+ meta: {
99
+ department: user.department,
100
+ companyName: user.companyName,
101
+ businessTypeID: user.businessTypeID
102
+ }
103
+ };
104
+ }
105
+ function mapPartoSessionFromToken(payload, token) {
106
+ return {
107
+ token,
108
+ expiresAt: payload.exp,
109
+ providerType: "parto",
110
+ iss: payload.iss,
111
+ user: {
112
+ userID: payload.ID,
113
+ username: payload.unique_name,
114
+ permissions: payload.PERMISSIONS?.split(",")
115
+ }
116
+ };
117
+ }
118
+
119
+ // src/auth/providers/atplatform/atplatform.runtime.ts
120
+ function mapATPlatformSessionFromLogin(response) {
121
+ return {
122
+ token: response.token,
123
+ refreshToken: response.refresh_token,
124
+ providerType: "atplatform",
125
+ user: {
126
+ userID: String(response.user_id),
127
+ username: response.username,
128
+ firstName: response.first_name,
129
+ lastName: response.last_name
130
+ }
131
+ };
132
+ }
133
+ function mapATPlatformSessionFromToken(payload, token) {
134
+ return {
135
+ token,
136
+ expiresAt: payload.exp,
137
+ iss: payload.iss,
138
+ providerType: "atplatform",
139
+ user: {
140
+ userID: payload.sub
141
+ }
142
+ };
143
+ }
144
+
145
+ // src/auth/auth.runtime.ts
146
+ var mapSessionFromLoginByProvider = {
147
+ atplatform: mapATPlatformSessionFromLogin,
148
+ parto: mapPartoSessionFromLogin
149
+ };
150
+ var mapSessionFromTokenByProvider = {
151
+ atplatform: mapATPlatformSessionFromToken,
152
+ parto: mapPartoSessionFromToken
153
+ };
154
+ function mapSessionFromLogin(providerType, response) {
155
+ const mapper = mapSessionFromLoginByProvider[providerType];
156
+ if (!mapper)
157
+ throw new Error(`Unsupported provider type: ${providerType}`);
158
+ return mapper(response);
159
+ }
160
+ function mapSessionFromToken(providerType, payload, token) {
161
+ const mapper = mapSessionFromTokenByProvider[providerType];
162
+ if (!mapper)
163
+ throw new Error(`Unsupported provider type: ${providerType}`);
164
+ return mapper(payload, token);
165
+ }
57
166
  export {
167
+ auth_exports as ATAuth,
58
168
  casing_exports as ATCasing
59
169
  };
60
170
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/casing/index.ts","../src/casing/case.types.ts","../src/casing/case.runtime.ts"],"sourcesContent":["// src/casing/index.ts\r\nexport * from \"./case.types\";\r\nexport * from \"./case.runtime\";\r\n\r\n// (optional) if you still like namespaces, keep them too:\r\nimport * as Types from \"./case.types\";\r\nimport * as Runtime from \"./case.runtime\";\r\nexport { Types, Runtime };\r\n","type FixAcronyms<S extends string> =\r\n S extends `${infer A}ID${infer B}` ? FixAcronyms<`${A}Id${B}`> : S;\r\n\r\nexport type SnakeCase<S extends string> =\r\n S extends `${infer H}${infer T}`\r\n ? T extends Uncapitalize<T>\r\n ? `${Lowercase<H>}${SnakeCase<T>}`\r\n : `${Lowercase<H>}_${SnakeCase<Uncapitalize<T>>}`\r\n : S;\r\n\r\nexport type CamelCase<S extends string> =\r\n S extends `${infer A}_${infer B}`\r\n ? `${A}${Capitalize<CamelCase<B>>}`\r\n : S;\r\n\r\ntype Primitive = string | number | boolean | bigint | symbol | null | undefined;\r\ntype Builtin = Primitive | Date | RegExp | Error;\r\n\r\nexport type DeepSnakeKeys<T> =\r\n T extends Builtin ? T :\r\n T extends (...args: any[]) => any ? T :\r\n T extends readonly [any, ...any[]]\r\n ? { [I in keyof T]: DeepSnakeKeys<T[I]> } :\r\n T extends ReadonlyArray<infer U>\r\n ? ReadonlyArray<DeepSnakeKeys<U>> :\r\n T extends Map<infer K, infer V>\r\n ? Map<DeepSnakeKeys<K>, DeepSnakeKeys<V>> :\r\n T extends Set<infer U>\r\n ? Set<DeepSnakeKeys<U>> :\r\n T extends object\r\n ? {\r\n [K in keyof T as K extends string\r\n ? SnakeCase<FixAcronyms<K>>\r\n : K\r\n ]: DeepSnakeKeys<T[K]>\r\n }\r\n : T;\r\n\r\nexport type DeepCamelKeys<T> =\r\n T extends Builtin ? T :\r\n T extends (...args: any[]) => any ? T :\r\n T extends readonly [any, ...any[]]\r\n ? { [I in keyof T]: DeepCamelKeys<T[I]> } :\r\n T extends ReadonlyArray<infer U>\r\n ? ReadonlyArray<DeepCamelKeys<U>> :\r\n T extends Map<infer K, infer V>\r\n ? Map<DeepCamelKeys<K>, DeepCamelKeys<V>> :\r\n T extends Set<infer U>\r\n ? Set<DeepCamelKeys<U>> :\r\n T extends object\r\n ? { [K in keyof T as K extends string ? CamelCase<K> : K]: DeepCamelKeys<T[K]> }\r\n : T;\r\n","const CAMEL_TO_SNAKE = /[A-Z]/g;\r\nconst SNAKE_TO_CAMEL = /_([a-z])/g;\r\n\r\n// Normalize common acronyms before snake conversion\r\nconst normalizeAcronyms = (k: string) => k.replace(/ID/g, \"Id\");\r\n\r\nexport const toSnakeKey = (k: string) =>\r\n normalizeAcronyms(k).replace(CAMEL_TO_SNAKE, m => `_${m.toLowerCase()}`);\r\n\r\nexport const toCamelKey = (k: string) =>\r\n k.replace(SNAKE_TO_CAMEL, (_, c) => c.toUpperCase());\r\n\r\nexport function toSnakeDeep<T>(value: T, exceptions = new Set<string>()): any {\r\n if (Array.isArray(value)) return value.map(v => toSnakeDeep(v, exceptions));\r\n if (value instanceof Date) return value;\r\n if (value && typeof value === \"object\") {\r\n const out: Record<string, any> = {};\r\n for (const [k, v] of Object.entries(value as any)) {\r\n const nk = exceptions.has(k) ? k : toSnakeKey(k);\r\n out[nk] = toSnakeDeep(v, exceptions);\r\n }\r\n return out;\r\n }\r\n return value;\r\n}\r\n\r\nexport function toCamelDeep<T>(value: T): any {\r\n if (Array.isArray(value)) return value.map(toCamelDeep);\r\n if (value instanceof Date) return value;\r\n if (value && typeof value === \"object\") {\r\n const out: Record<string, any> = {};\r\n for (const [k, v] of Object.entries(value as any)) {\r\n out[toCamelKey(k)] = toCamelDeep(v);\r\n }\r\n return out;\r\n }\r\n return value;\r\n}\r\n"],"mappings":";;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAM,iBAAiB;AACvB,IAAM,iBAAiB;AAGvB,IAAM,oBAAoB,CAAC,MAAc,EAAE,QAAQ,OAAO,IAAI;AAEvD,IAAM,aAAa,CAAC,MACvB,kBAAkB,CAAC,EAAE,QAAQ,gBAAgB,OAAK,IAAI,EAAE,YAAY,CAAC,EAAE;AAEpE,IAAM,aAAa,CAAC,MACvB,EAAE,QAAQ,gBAAgB,CAAC,GAAG,MAAM,EAAE,YAAY,CAAC;AAEhD,SAAS,YAAe,OAAU,aAAa,oBAAI,IAAY,GAAQ;AAC1E,MAAI,MAAM,QAAQ,KAAK,EAAG,QAAO,MAAM,IAAI,OAAK,YAAY,GAAG,UAAU,CAAC;AAC1E,MAAI,iBAAiB,KAAM,QAAO;AAClC,MAAI,SAAS,OAAO,UAAU,UAAU;AACpC,UAAM,MAA2B,CAAC;AAClC,eAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,KAAY,GAAG;AAC/C,YAAM,KAAK,WAAW,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;AAC/C,UAAI,EAAE,IAAI,YAAY,GAAG,UAAU;AAAA,IACvC;AACA,WAAO;AAAA,EACX;AACA,SAAO;AACX;AAEO,SAAS,YAAe,OAAe;AAC1C,MAAI,MAAM,QAAQ,KAAK,EAAG,QAAO,MAAM,IAAI,WAAW;AACtD,MAAI,iBAAiB,KAAM,QAAO;AAClC,MAAI,SAAS,OAAO,UAAU,UAAU;AACpC,UAAM,MAA2B,CAAC;AAClC,eAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,KAAY,GAAG;AAC/C,UAAI,WAAW,CAAC,CAAC,IAAI,YAAY,CAAC;AAAA,IACtC;AACA,WAAO;AAAA,EACX;AACA,SAAO;AACX;","names":[]}
1
+ {"version":3,"sources":["../src/casing/index.ts","../src/casing/case.types.ts","../src/casing/case.runtime.ts","../src/auth/index.ts","../src/auth/domain/authSession.ts","../src/auth/auth.runtime.ts","../src/auth/providers/parto/parto.runtime.ts","../src/auth/providers/atplatform/atplatform.runtime.ts"],"sourcesContent":["// src/casing/index.ts\r\nexport * from \"./case.types\";\r\nexport * from \"./case.runtime\";\r\n\r\n// (optional) if you still like namespaces, keep them too:\r\nimport * as Types from \"./case.types\";\r\nimport * as Runtime from \"./case.runtime\";\r\nexport { Types, Runtime };\r\n","type FixAcronyms<S extends string> =\r\n S extends `${infer A}ID${infer B}` ? FixAcronyms<`${A}Id${B}`> : S;\r\n\r\nexport type SnakeCase<S extends string> =\r\n S extends `${infer H}${infer T}`\r\n ? T extends Uncapitalize<T>\r\n ? `${Lowercase<H>}${SnakeCase<T>}`\r\n : `${Lowercase<H>}_${SnakeCase<Uncapitalize<T>>}`\r\n : S;\r\n\r\nexport type CamelCase<S extends string> =\r\n S extends `${infer A}_${infer B}`\r\n ? `${A}${Capitalize<CamelCase<B>>}`\r\n : S;\r\n\r\ntype Primitive = string | number | boolean | bigint | symbol | null | undefined;\r\ntype Builtin = Primitive | Date | RegExp | Error;\r\n\r\nexport type DeepSnakeKeys<T> =\r\n T extends Builtin ? T :\r\n T extends (...args: any[]) => any ? T :\r\n T extends readonly [any, ...any[]]\r\n ? { [I in keyof T]: DeepSnakeKeys<T[I]> } :\r\n T extends ReadonlyArray<infer U>\r\n ? ReadonlyArray<DeepSnakeKeys<U>> :\r\n T extends Map<infer K, infer V>\r\n ? Map<DeepSnakeKeys<K>, DeepSnakeKeys<V>> :\r\n T extends Set<infer U>\r\n ? Set<DeepSnakeKeys<U>> :\r\n T extends object\r\n ? {\r\n [K in keyof T as K extends string\r\n ? SnakeCase<FixAcronyms<K>>\r\n : K\r\n ]: DeepSnakeKeys<T[K]>\r\n }\r\n : T;\r\n\r\nexport type DeepCamelKeys<T> =\r\n T extends Builtin ? T :\r\n T extends (...args: any[]) => any ? T :\r\n T extends readonly [any, ...any[]]\r\n ? { [I in keyof T]: DeepCamelKeys<T[I]> } :\r\n T extends ReadonlyArray<infer U>\r\n ? ReadonlyArray<DeepCamelKeys<U>> :\r\n T extends Map<infer K, infer V>\r\n ? Map<DeepCamelKeys<K>, DeepCamelKeys<V>> :\r\n T extends Set<infer U>\r\n ? Set<DeepCamelKeys<U>> :\r\n T extends object\r\n ? { [K in keyof T as K extends string ? CamelCase<K> : K]: DeepCamelKeys<T[K]> }\r\n : T;\r\n","const CAMEL_TO_SNAKE = /[A-Z]/g;\r\nconst SNAKE_TO_CAMEL = /_([a-z])/g;\r\n\r\n// Normalize common acronyms before snake conversion\r\nconst normalizeAcronyms = (k: string) => k.replace(/ID/g, \"Id\");\r\n\r\nexport const toSnakeKey = (k: string) =>\r\n normalizeAcronyms(k).replace(CAMEL_TO_SNAKE, m => `_${m.toLowerCase()}`);\r\n\r\nexport const toCamelKey = (k: string) =>\r\n k.replace(SNAKE_TO_CAMEL, (_, c) => c.toUpperCase());\r\n\r\nexport function toSnakeDeep<T>(value: T, exceptions = new Set<string>()): any {\r\n if (Array.isArray(value)) return value.map(v => toSnakeDeep(v, exceptions));\r\n if (value instanceof Date) return value;\r\n if (value && typeof value === \"object\") {\r\n const out: Record<string, any> = {};\r\n for (const [k, v] of Object.entries(value as any)) {\r\n const nk = exceptions.has(k) ? k : toSnakeKey(k);\r\n out[nk] = toSnakeDeep(v, exceptions);\r\n }\r\n return out;\r\n }\r\n return value;\r\n}\r\n\r\nexport function toCamelDeep<T>(value: T): any {\r\n if (Array.isArray(value)) return value.map(toCamelDeep);\r\n if (value instanceof Date) return value;\r\n if (value && typeof value === \"object\") {\r\n const out: Record<string, any> = {};\r\n for (const [k, v] of Object.entries(value as any)) {\r\n out[toCamelKey(k)] = toCamelDeep(v);\r\n }\r\n return out;\r\n }\r\n return value;\r\n}\r\n","// Export core auth models & runtime functions\r\nexport * from \"./domain/authSession\";\r\nexport * from \"./auth.runtime\";\r\n\r\nimport * as CoreTypes from \"./domain/authSession\";\r\nimport * as Runtime from \"./auth.runtime\";\r\n\r\n// Exported namespace grouping all domain, session, and provider-specific types\r\nexport namespace Types {\r\n // Core session types\r\n export type ATAuthProviderType = CoreTypes.ATAuthProviderType;\r\n export type ATAuthUserDTO = CoreTypes.ATAuthUserDTO;\r\n export type ATAuthSessionDTO = CoreTypes.ATAuthSessionDTO;\r\n\r\n // ATPlatform Types\r\n export type ATPlatformLoginResponseDTO = import(\"./providers/atplatform/atplatform.login.types\").ATPlatformLoginResponseDTO;\r\n export type ATPlatformAccessTokenPayloadDTO = import(\"./providers/atplatform/atplatform.token.types\").ATPlatformAccessTokenPayloadDTO;\r\n\r\n // Parto Types\r\n export type PartoUserInfoDTO = import(\"./providers/parto/parto.login.types\").PartoUserInfoDTO;\r\n export type PartoLoginResponseDTO = import(\"./providers/parto/parto.login.types\").PartoLoginResponseDTO;\r\n export type PartoAccessTokenPayloadDTO = import(\"./providers/parto/parto.token.types\").PartoAccessTokenPayloadDTO;\r\n}\r\n\r\n// Export runtime under a clean namespace\r\nexport { Runtime };\r\n","export const ATAuthProviderTypes = [\"parto\", \"atplatform\"] as const;\r\nexport type ATAuthProviderType = typeof ATAuthProviderTypes[number];\r\n\r\nexport interface ATAuthUserDTO {\r\n userID: string;\r\n\r\n username?: string;\r\n\r\n email?: string;\r\n\r\n firstName?: string;\r\n\r\n lastName?: string;\r\n\r\n avatar?: string;\r\n\r\n permissions?: string[];\r\n}\r\n\r\nexport interface ATAuthSessionDTO {\r\n token: string;\r\n\r\n refreshToken?: string;\r\n\r\n expiresAt?: number;\r\n\r\n iss?: string;\r\n\r\n providerType: ATAuthProviderType;\r\n\r\n user: ATAuthUserDTO;\r\n\r\n //issuer junks \r\n meta?: Record<string, unknown>;\r\n}\r\n","import {\r\n mapPartoSessionFromLogin,\r\n mapPartoSessionFromToken,\r\n} from \"./providers/parto/parto.runtime\";\r\n\r\nimport {\r\n mapATPlatformSessionFromLogin,\r\n mapATPlatformSessionFromToken,\r\n} from \"./providers/atplatform/atplatform.runtime\";\r\n\r\nimport { ATAuthProviderType, ATAuthSessionDTO } from \"./domain/authSession\";\r\n\r\nexport * from \"./providers/parto/parto.runtime\";\r\nexport * from \"./providers/atplatform/atplatform.runtime\";\r\n\r\nconst mapSessionFromLoginByProvider: Record<\r\n ATAuthProviderType,\r\n (response: any) => ATAuthSessionDTO\r\n> = {\r\n atplatform: mapATPlatformSessionFromLogin,\r\n parto: mapPartoSessionFromLogin,\r\n};\r\n\r\nconst mapSessionFromTokenByProvider: Record<\r\n ATAuthProviderType,\r\n (payload: any, token: string) => ATAuthSessionDTO\r\n> = {\r\n atplatform: mapATPlatformSessionFromToken,\r\n parto: mapPartoSessionFromToken,\r\n};\r\n\r\nexport function mapSessionFromLogin(\r\n providerType: ATAuthProviderType,\r\n response: unknown,\r\n): ATAuthSessionDTO {\r\n const mapper = mapSessionFromLoginByProvider[providerType];\r\n\r\n if (!mapper)\r\n throw new Error(`Unsupported provider type: ${providerType}`);\r\n\r\n return mapper(response);\r\n}\r\n\r\nexport function mapSessionFromToken(\r\n providerType: ATAuthProviderType,\r\n payload: unknown,\r\n token: string\r\n): ATAuthSessionDTO {\r\n const mapper = mapSessionFromTokenByProvider[providerType];\r\n\r\n if (!mapper)\r\n throw new Error(`Unsupported provider type: ${providerType}`);\r\n\r\n return mapper(payload, token);\r\n}\r\n\r\n","import { ATAuthSessionDTO } from \"../../domain/authSession\";\r\nimport { PartoLoginResponseDTO } from \"./parto.login.types\";\r\nimport { PartoAccessTokenPayloadDTO } from \"./parto.token.types\";\r\n\r\nexport function mapPartoSessionFromLogin(\r\n response: PartoLoginResponseDTO\r\n): ATAuthSessionDTO {\r\n const user = response.userInfo;\r\n\r\n return {\r\n token: response.token,\r\n refreshToken: response.refreshToken,\r\n providerType: 'parto',\r\n user: {\r\n userID: String(user.ID),\r\n username: user.userName,\r\n firstName: user.firstName,\r\n lastName: user.lastName\r\n },\r\n meta: {\r\n department: user.department,\r\n companyName: user.companyName,\r\n businessTypeID: user.businessTypeID\r\n }\r\n };\r\n}\r\n\r\nexport function mapPartoSessionFromToken(\r\n payload: PartoAccessTokenPayloadDTO,\r\n token: string\r\n): ATAuthSessionDTO {\r\n return {\r\n token,\r\n expiresAt: payload.exp,\r\n providerType: 'parto',\r\n iss: payload.iss,\r\n user: {\r\n userID: payload.ID,\r\n username: payload.unique_name,\r\n permissions: payload.PERMISSIONS?.split(\",\")\r\n }\r\n };\r\n}\r\n","import { ATAuthSessionDTO } from \"../../domain/authSession\";\r\nimport { ATPlatformLoginResponseDTO } from \"./atplatform.login.types\";\r\nimport { ATPlatformAccessTokenPayloadDTO } from \"./atplatform.token.types\";\r\n\r\nexport function mapATPlatformSessionFromLogin(\r\n response: ATPlatformLoginResponseDTO\r\n): ATAuthSessionDTO {\r\n return {\r\n token: response.token,\r\n refreshToken: response.refresh_token,\r\n providerType: 'atplatform',\r\n user: {\r\n userID: String(response.user_id),\r\n username: response.username,\r\n firstName: response.first_name,\r\n lastName: response.last_name\r\n }\r\n };\r\n}\r\n\r\nexport function mapATPlatformSessionFromToken(\r\n payload: ATPlatformAccessTokenPayloadDTO,\r\n token: string\r\n): ATAuthSessionDTO {\r\n return {\r\n token,\r\n expiresAt: payload.exp,\r\n iss: payload.iss,\r\n providerType: 'atplatform',\r\n user: {\r\n userID: payload.sub\r\n }\r\n };\r\n}\r\n"],"mappings":"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","names":[]}
package/dist/protocol.cjs CHANGED
@@ -34,9 +34,10 @@ var ATAPIErrorCodeMap = {
34
34
  };
35
35
 
36
36
  // src/ai/protocol/ids.ts
37
+ var SEG = `[a-z0-9_]+`;
37
38
  var RX = {
38
- capability: /^cap\.[a-z0-9]+(?:\.[a-z0-9]+){3,}$/i,
39
- prompt: /^prompt\.[a-z0-9]+(?:\.[a-z0-9]+){3,}\.v[0-9]+$/i
39
+ capability: new RegExp(`^cap\\.${SEG}(?:\\.${SEG}){3,}$`, "i"),
40
+ prompt: new RegExp(`^prompt\\.${SEG}(?:\\.${SEG}){3,}\\.v[0-9]+$`, "i")
40
41
  };
41
42
  function validate(kind, id) {
42
43
  if (!RX[kind].test(id)) {
@@ -44,34 +45,24 @@ function validate(kind, id) {
44
45
  }
45
46
  }
46
47
  function normalizeSegment(seg) {
47
- return seg.trim().toLowerCase().replace(/[\s_]+/g, ".").replace(/[^a-z0-9.]/g, "").replace(/\.+/g, ".").replace(/^\.+|\.+$/g, "");
48
+ return seg.trim().toLowerCase().replace(/[\s-]+/g, "_").replace(/[^a-z0-9_]/g, "").replace(/_+/g, "_").replace(/^_+|_+$/g, "");
48
49
  }
49
50
  function joinSegments(...segs) {
50
51
  return segs.map(normalizeSegment).filter(Boolean).join(".");
51
52
  }
52
53
  var ATAIID = {
53
- /** Validate & brand an existing capability id (throws if invalid). */
54
54
  validateCapability(id) {
55
55
  validate("capability", id);
56
56
  return id;
57
57
  },
58
- /** Validate & brand an existing prompt id (throws if invalid). */
59
58
  validatePrompt(id) {
60
59
  validate("prompt", id);
61
60
  return id;
62
61
  },
63
- /**
64
- * Build a capability id from parts (then validates & brands).
65
- * Format: cap.<app>.<area>.<object>.<verb>
66
- */
67
62
  makeCapability(parts) {
68
63
  const id = `cap.${joinSegments(parts.app, parts.area, parts.target, parts.action)}`;
69
64
  return ATAIID.validateCapability(id);
70
65
  },
71
- /**
72
- * Build a prompt id from parts (then validates & brands).
73
- * Format: prompt.<app>.<area>.<object>.<verb>.v<major>
74
- */
75
66
  makePrompt(parts) {
76
67
  const major = Math.max(0, Math.floor(parts.v));
77
68
  const id = `prompt.${joinSegments(parts.app, parts.area, parts.target, parts.action)}.v${major}`;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/protocol.ts","../src/core/protocol/errors.ts","../src/ai/protocol/ids.ts","../src/ai/protocol/prompts.ts","../src/ai/protocol/capabilities.ts"],"sourcesContent":["export * from \"./core/protocol/errors\";\r\n\r\nimport { ATAPIErrorCodeMap } from \"./core/protocol/errors\";\r\n\r\nimport { ATAIID } from \"./ai/protocol/ids\";\r\nimport { ATAIPrompts } from \"./ai/protocol/prompts\";\r\nimport { ATAICapabilities } from \"./ai/protocol/capabilities\";\r\n\r\nexport const ATAI = {\r\n ID: ATAIID,\r\n Prompts: ATAIPrompts,\r\n Capabilities: ATAICapabilities,\r\n} as const;\r\n\r\nexport const ATProtocol = {\r\n ATAPIErrorCodeMap,\r\n AI: ATAI,\r\n} as const;\r\n\r\nexport type ATAICapabilityID =\r\n import(\"./ai/protocol/ids\").ATAICapabilityID;\r\nexport type ATAIPromptID =\r\n import(\"./ai/protocol/ids\").ATAIPromptID;\r\n\r\nexport type ATAPIErrorCode =\r\n import(\"./core/protocol/errors\").ATAPIErrorCode;\r\n","export const ATAPIErrorCodeMap = {\r\n AI_SESSION_EXPIRED: 4501,\r\n AI_SESSION_NOT_FOUND: 4502,\r\n AI_REQUEST_CONTEXT_MISSING: 4503,\r\n} as const;\r\n\r\nexport type ATAPIErrorCode = typeof ATAPIErrorCodeMap[keyof typeof ATAPIErrorCodeMap];\r\n","type Brand<T, B extends string> = T & { readonly __brand: B };\r\n\r\nexport type ATAICapabilityID = Brand<string, \"ATAICapabilityID\">;\r\nexport type ATAIPromptID = Brand<string, \"ATAIPromptID\">;\r\n\r\nconst RX = {\r\n capability: /^cap\\.[a-z0-9]+(?:\\.[a-z0-9]+){3,}$/i,\r\n prompt: /^prompt\\.[a-z0-9]+(?:\\.[a-z0-9]+){3,}\\.v[0-9]+$/i,\r\n} as const;\r\n\r\nfunction validate(kind: keyof typeof RX, id: string): void {\r\n if (!RX[kind].test(id)) {\r\n throw new Error(`[AI-PROTOCOL] Invalid ${kind} id: \"${id}\"`);\r\n }\r\n}\r\n\r\n/**\r\n * Normalize a segment for IDs.\r\n * Keep it strict: IDs should be stable, grep-friendly, and predictable.\r\n * - trims\r\n * - lowercases\r\n * - converts spaces/underscores to dots\r\n * - removes illegal chars (keeps a-z0-9 and dots)\r\n * - collapses multiple dots\r\n */\r\nfunction normalizeSegment(seg: string): string {\r\n return seg\r\n .trim()\r\n .toLowerCase()\r\n .replace(/[\\s_]+/g, \".\")\r\n .replace(/[^a-z0-9.]/g, \"\")\r\n .replace(/\\.+/g, \".\")\r\n .replace(/^\\.+|\\.+$/g, \"\");\r\n}\r\n\r\nfunction joinSegments(...segs: string[]): string {\r\n return segs.map(normalizeSegment).filter(Boolean).join(\".\");\r\n}\r\n\r\nexport const ATAIID = {\r\n /** Validate & brand an existing capability id (throws if invalid). */\r\n validateCapability(id: string): ATAICapabilityID {\r\n validate(\"capability\", id);\r\n return id as ATAICapabilityID;\r\n },\r\n\r\n /** Validate & brand an existing prompt id (throws if invalid). */\r\n validatePrompt(id: string): ATAIPromptID {\r\n validate(\"prompt\", id);\r\n return id as ATAIPromptID;\r\n },\r\n\r\n /**\r\n * Build a capability id from parts (then validates & brands).\r\n * Format: cap.<app>.<area>.<object>.<verb>\r\n */\r\n makeCapability(parts: {\r\n app: string;\r\n area: string;\r\n target: string;\r\n action: string;\r\n }): ATAICapabilityID {\r\n const id = `cap.${joinSegments(parts.app, parts.area, parts.target, parts.action)}`;\r\n return ATAIID.validateCapability(id);\r\n },\r\n\r\n /**\r\n * Build a prompt id from parts (then validates & brands).\r\n * Format: prompt.<app>.<area>.<object>.<verb>.v<major>\r\n */\r\n makePrompt(parts: {\r\n app: string;\r\n area: string;\r\n target: string;\r\n action: string;\r\n v: number; // major version\r\n }): ATAIPromptID {\r\n const major = Math.max(0, Math.floor(parts.v));\r\n const id = `prompt.${joinSegments(parts.app, parts.area, parts.target, parts.action)}.v${major}`;\r\n return ATAIID.validatePrompt(id);\r\n },\r\n} as const;\r\n","import { ATAIID } from \"./ids\";\r\n\r\nexport const ATAIPrompts = {\r\n BPMS: {\r\n SYSTEM: {\r\n INTENT_DETECTION_V1: ATAIID.makePrompt({\r\n app: \"bpms\",\r\n area: \"system\",\r\n target: \"intent\",\r\n action: \"detection\",\r\n v: 1\r\n }),\r\n },\r\n FORMAKER: {\r\n VALUE_GENERATE_V1: ATAIID.makePrompt({\r\n app: \"bpms\",\r\n area: \"formmaker\",\r\n target: \"value\",\r\n action: \"generate\",\r\n v: 1,\r\n }),\r\n },\r\n APIMANAGER: {\r\n POST_RESPONSE_SCRIPT_GENERATE_V1: ATAIID.makePrompt({\r\n app: \"bpms\",\r\n area: \"apimanager\",\r\n target: \"post_response_script\",\r\n action: \"generate\",\r\n v: 1,\r\n }),\r\n },\r\n },\r\n} as const;\r\n","import { ATAIID } from \"./ids\";\r\n\r\nexport const ATAICapabilities = {\r\n BPMS: {\r\n FORMAKER: {\r\n FORM_GENERATE: ATAIID.makeCapability({\r\n app: \"bpms\",\r\n area: \"formmaker\",\r\n target: \"form\",\r\n action: \"generate\",\r\n }),\r\n },\r\n APIMANAGER: {\r\n POST_RESPONSE_SCRIPT_GENERATE: ATAIID.makeCapability({\r\n app: \"bpms\",\r\n area: \"apimanager\",\r\n target: \"post_response_script\",\r\n action: \"generate\",\r\n }),\r\n },\r\n },\r\n} as const;\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,oBAAoB;AAAA,EAC7B,oBAAoB;AAAA,EACpB,sBAAsB;AAAA,EACtB,4BAA4B;AAChC;;;ACCA,IAAM,KAAK;AAAA,EACP,YAAY;AAAA,EACZ,QAAQ;AACZ;AAEA,SAAS,SAAS,MAAuB,IAAkB;AACvD,MAAI,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG;AACpB,UAAM,IAAI,MAAM,yBAAyB,IAAI,SAAS,EAAE,GAAG;AAAA,EAC/D;AACJ;AAWA,SAAS,iBAAiB,KAAqB;AAC3C,SAAO,IACF,KAAK,EACL,YAAY,EACZ,QAAQ,WAAW,GAAG,EACtB,QAAQ,eAAe,EAAE,EACzB,QAAQ,QAAQ,GAAG,EACnB,QAAQ,cAAc,EAAE;AACjC;AAEA,SAAS,gBAAgB,MAAwB;AAC7C,SAAO,KAAK,IAAI,gBAAgB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAC9D;AAEO,IAAM,SAAS;AAAA;AAAA,EAElB,mBAAmB,IAA8B;AAC7C,aAAS,cAAc,EAAE;AACzB,WAAO;AAAA,EACX;AAAA;AAAA,EAGA,eAAe,IAA0B;AACrC,aAAS,UAAU,EAAE;AACrB,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAe,OAKM;AACjB,UAAM,KAAK,OAAO,aAAa,MAAM,KAAK,MAAM,MAAM,MAAM,QAAQ,MAAM,MAAM,CAAC;AACjF,WAAO,OAAO,mBAAmB,EAAE;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAW,OAMM;AACb,UAAM,QAAQ,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,CAAC,CAAC;AAC7C,UAAM,KAAK,UAAU,aAAa,MAAM,KAAK,MAAM,MAAM,MAAM,QAAQ,MAAM,MAAM,CAAC,KAAK,KAAK;AAC9F,WAAO,OAAO,eAAe,EAAE;AAAA,EACnC;AACJ;;;AC/EO,IAAM,cAAc;AAAA,EACvB,MAAM;AAAA,IACF,QAAQ;AAAA,MACJ,qBAAqB,OAAO,WAAW;AAAA,QACnC,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,GAAG;AAAA,MACP,CAAC;AAAA,IACL;AAAA,IACA,UAAU;AAAA,MACN,mBAAmB,OAAO,WAAW;AAAA,QACjC,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,GAAG;AAAA,MACP,CAAC;AAAA,IACL;AAAA,IACA,YAAY;AAAA,MACR,kCAAkC,OAAO,WAAW;AAAA,QAChD,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,GAAG;AAAA,MACP,CAAC;AAAA,IACL;AAAA,EACJ;AACJ;;;AC9BO,IAAM,mBAAmB;AAAA,EAC5B,MAAM;AAAA,IACF,UAAU;AAAA,MACN,eAAe,OAAO,eAAe;AAAA,QACjC,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,MACZ,CAAC;AAAA,IACL;AAAA,IACA,YAAY;AAAA,MACR,+BAA+B,OAAO,eAAe;AAAA,QACjD,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,MACZ,CAAC;AAAA,IACL;AAAA,EACJ;AACJ;;;AJbO,IAAM,OAAO;AAAA,EAChB,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,cAAc;AAClB;AAEO,IAAM,aAAa;AAAA,EACtB;AAAA,EACA,IAAI;AACR;","names":[]}
1
+ {"version":3,"sources":["../src/protocol.ts","../src/core/protocol/errors.ts","../src/ai/protocol/ids.ts","../src/ai/protocol/prompts.ts","../src/ai/protocol/capabilities.ts"],"sourcesContent":["export * from \"./core/protocol/errors\";\r\n\r\nimport { ATAPIErrorCodeMap } from \"./core/protocol/errors\";\r\n\r\nimport { ATAIID } from \"./ai/protocol/ids\";\r\nimport { ATAIPrompts } from \"./ai/protocol/prompts\";\r\nimport { ATAICapabilities } from \"./ai/protocol/capabilities\";\r\n\r\nexport const ATAI = {\r\n ID: ATAIID,\r\n Prompts: ATAIPrompts,\r\n Capabilities: ATAICapabilities,\r\n} as const;\r\n\r\nexport const ATProtocol = {\r\n ATAPIErrorCodeMap,\r\n AI: ATAI,\r\n} as const;\r\n\r\nexport type ATAICapabilityID =\r\n import(\"./ai/protocol/ids\").ATAICapabilityID;\r\nexport type ATAIPromptID =\r\n import(\"./ai/protocol/ids\").ATAIPromptID;\r\n\r\nexport type ATAPIErrorCode =\r\n import(\"./core/protocol/errors\").ATAPIErrorCode;\r\n","export const ATAPIErrorCodeMap = {\r\n AI_SESSION_EXPIRED: 4501,\r\n AI_SESSION_NOT_FOUND: 4502,\r\n AI_REQUEST_CONTEXT_MISSING: 4503,\r\n} as const;\r\n\r\nexport type ATAPIErrorCode = typeof ATAPIErrorCodeMap[keyof typeof ATAPIErrorCodeMap];\r\n","type Brand<T, B extends string> = T & { readonly __brand: B };\r\n\r\nexport type ATAICapabilityID = Brand<string, \"ATAICapabilityID\">;\r\nexport type ATAIPromptID = Brand<string, \"ATAIPromptID\">;\r\n\r\n// allow underscores inside each segment\r\nconst SEG = `[a-z0-9_]+`;\r\n\r\nconst RX = {\r\n capability: new RegExp(`^cap\\\\.${SEG}(?:\\\\.${SEG}){3,}$`, \"i\"),\r\n prompt: new RegExp(`^prompt\\\\.${SEG}(?:\\\\.${SEG}){3,}\\\\.v[0-9]+$`, \"i\"),\r\n} as const;\r\n\r\nfunction validate(kind: keyof typeof RX, id: string): void {\r\n if (!RX[kind].test(id)) {\r\n throw new Error(`[AI-PROTOCOL] Invalid ${kind} id: \"${id}\"`);\r\n }\r\n}\r\n\r\n/**\r\n * Normalize a segment for IDs (snake_case).\r\n * - trims\r\n * - lowercases\r\n * - converts spaces and dashes to underscores\r\n * - removes illegal chars (keeps a-z0-9 and _)\r\n * - collapses multiple underscores\r\n * - trims leading/trailing underscores\r\n */\r\nfunction normalizeSegment(seg: string): string {\r\n return seg\r\n .trim()\r\n .toLowerCase()\r\n .replace(/[\\s-]+/g, \"_\") // spaces/dashes -> _\r\n .replace(/[^a-z0-9_]/g, \"\") // keep only a-z0-9_\r\n .replace(/_+/g, \"_\") // collapse __\r\n .replace(/^_+|_+$/g, \"\"); // trim edges\r\n}\r\n\r\nfunction joinSegments(...segs: string[]): string {\r\n return segs.map(normalizeSegment).filter(Boolean).join(\".\");\r\n}\r\n\r\nexport const ATAIID = {\r\n validateCapability(id: string): ATAICapabilityID {\r\n validate(\"capability\", id);\r\n return id as ATAICapabilityID;\r\n },\r\n\r\n validatePrompt(id: string): ATAIPromptID {\r\n validate(\"prompt\", id);\r\n return id as ATAIPromptID;\r\n },\r\n\r\n makeCapability(parts: {\r\n app: string;\r\n area: string;\r\n target: string;\r\n action: string;\r\n }): ATAICapabilityID {\r\n const id = `cap.${joinSegments(parts.app, parts.area, parts.target, parts.action)}`;\r\n return ATAIID.validateCapability(id);\r\n },\r\n\r\n makePrompt(parts: {\r\n app: string;\r\n area: string;\r\n target: string;\r\n action: string;\r\n v: number;\r\n }): ATAIPromptID {\r\n const major = Math.max(0, Math.floor(parts.v));\r\n const id = `prompt.${joinSegments(parts.app, parts.area, parts.target, parts.action)}.v${major}`;\r\n return ATAIID.validatePrompt(id);\r\n },\r\n} as const;\r\n","import { ATAIID } from \"./ids\";\r\n\r\nexport const ATAIPrompts = {\r\n BPMS: {\r\n SYSTEM: {\r\n INTENT_DETECTION_V1: ATAIID.makePrompt({\r\n app: \"bpms\",\r\n area: \"system\",\r\n target: \"intent\",\r\n action: \"detection\",\r\n v: 1\r\n }),\r\n },\r\n FORMAKER: {\r\n VALUE_GENERATE_V1: ATAIID.makePrompt({\r\n app: \"bpms\",\r\n area: \"formmaker\",\r\n target: \"value\",\r\n action: \"generate\",\r\n v: 1,\r\n }),\r\n },\r\n APIMANAGER: {\r\n POST_RESPONSE_SCRIPT_GENERATE_V1: ATAIID.makePrompt({\r\n app: \"bpms\",\r\n area: \"apimanager\",\r\n target: \"post_response_script\",\r\n action: \"generate\",\r\n v: 1,\r\n }),\r\n },\r\n },\r\n} as const;\r\n","import { ATAIID } from \"./ids\";\r\n\r\nexport const ATAICapabilities = {\r\n BPMS: {\r\n FORMAKER: {\r\n FORM_GENERATE: ATAIID.makeCapability({\r\n app: \"bpms\",\r\n area: \"formmaker\",\r\n target: \"form\",\r\n action: \"generate\",\r\n }),\r\n },\r\n APIMANAGER: {\r\n POST_RESPONSE_SCRIPT_GENERATE: ATAIID.makeCapability({\r\n app: \"bpms\",\r\n area: \"apimanager\",\r\n target: \"post_response_script\",\r\n action: \"generate\",\r\n }),\r\n },\r\n },\r\n} as const;\r\n"],"mappings":"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","names":[]}
package/dist/protocol.mjs CHANGED
@@ -8,9 +8,10 @@ var ATAPIErrorCodeMap = {
8
8
  };
9
9
 
10
10
  // src/ai/protocol/ids.ts
11
+ var SEG = `[a-z0-9_]+`;
11
12
  var RX = {
12
- capability: /^cap\.[a-z0-9]+(?:\.[a-z0-9]+){3,}$/i,
13
- prompt: /^prompt\.[a-z0-9]+(?:\.[a-z0-9]+){3,}\.v[0-9]+$/i
13
+ capability: new RegExp(`^cap\\.${SEG}(?:\\.${SEG}){3,}$`, "i"),
14
+ prompt: new RegExp(`^prompt\\.${SEG}(?:\\.${SEG}){3,}\\.v[0-9]+$`, "i")
14
15
  };
15
16
  function validate(kind, id) {
16
17
  if (!RX[kind].test(id)) {
@@ -18,34 +19,24 @@ function validate(kind, id) {
18
19
  }
19
20
  }
20
21
  function normalizeSegment(seg) {
21
- return seg.trim().toLowerCase().replace(/[\s_]+/g, ".").replace(/[^a-z0-9.]/g, "").replace(/\.+/g, ".").replace(/^\.+|\.+$/g, "");
22
+ return seg.trim().toLowerCase().replace(/[\s-]+/g, "_").replace(/[^a-z0-9_]/g, "").replace(/_+/g, "_").replace(/^_+|_+$/g, "");
22
23
  }
23
24
  function joinSegments(...segs) {
24
25
  return segs.map(normalizeSegment).filter(Boolean).join(".");
25
26
  }
26
27
  var ATAIID = {
27
- /** Validate & brand an existing capability id (throws if invalid). */
28
28
  validateCapability(id) {
29
29
  validate("capability", id);
30
30
  return id;
31
31
  },
32
- /** Validate & brand an existing prompt id (throws if invalid). */
33
32
  validatePrompt(id) {
34
33
  validate("prompt", id);
35
34
  return id;
36
35
  },
37
- /**
38
- * Build a capability id from parts (then validates & brands).
39
- * Format: cap.<app>.<area>.<object>.<verb>
40
- */
41
36
  makeCapability(parts) {
42
37
  const id = `cap.${joinSegments(parts.app, parts.area, parts.target, parts.action)}`;
43
38
  return ATAIID.validateCapability(id);
44
39
  },
45
- /**
46
- * Build a prompt id from parts (then validates & brands).
47
- * Format: prompt.<app>.<area>.<object>.<verb>.v<major>
48
- */
49
40
  makePrompt(parts) {
50
41
  const major = Math.max(0, Math.floor(parts.v));
51
42
  const id = `prompt.${joinSegments(parts.app, parts.area, parts.target, parts.action)}.v${major}`;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/protocol/errors.ts","../src/ai/protocol/ids.ts","../src/ai/protocol/prompts.ts","../src/ai/protocol/capabilities.ts","../src/protocol.ts"],"sourcesContent":["export const ATAPIErrorCodeMap = {\r\n AI_SESSION_EXPIRED: 4501,\r\n AI_SESSION_NOT_FOUND: 4502,\r\n AI_REQUEST_CONTEXT_MISSING: 4503,\r\n} as const;\r\n\r\nexport type ATAPIErrorCode = typeof ATAPIErrorCodeMap[keyof typeof ATAPIErrorCodeMap];\r\n","type Brand<T, B extends string> = T & { readonly __brand: B };\r\n\r\nexport type ATAICapabilityID = Brand<string, \"ATAICapabilityID\">;\r\nexport type ATAIPromptID = Brand<string, \"ATAIPromptID\">;\r\n\r\nconst RX = {\r\n capability: /^cap\\.[a-z0-9]+(?:\\.[a-z0-9]+){3,}$/i,\r\n prompt: /^prompt\\.[a-z0-9]+(?:\\.[a-z0-9]+){3,}\\.v[0-9]+$/i,\r\n} as const;\r\n\r\nfunction validate(kind: keyof typeof RX, id: string): void {\r\n if (!RX[kind].test(id)) {\r\n throw new Error(`[AI-PROTOCOL] Invalid ${kind} id: \"${id}\"`);\r\n }\r\n}\r\n\r\n/**\r\n * Normalize a segment for IDs.\r\n * Keep it strict: IDs should be stable, grep-friendly, and predictable.\r\n * - trims\r\n * - lowercases\r\n * - converts spaces/underscores to dots\r\n * - removes illegal chars (keeps a-z0-9 and dots)\r\n * - collapses multiple dots\r\n */\r\nfunction normalizeSegment(seg: string): string {\r\n return seg\r\n .trim()\r\n .toLowerCase()\r\n .replace(/[\\s_]+/g, \".\")\r\n .replace(/[^a-z0-9.]/g, \"\")\r\n .replace(/\\.+/g, \".\")\r\n .replace(/^\\.+|\\.+$/g, \"\");\r\n}\r\n\r\nfunction joinSegments(...segs: string[]): string {\r\n return segs.map(normalizeSegment).filter(Boolean).join(\".\");\r\n}\r\n\r\nexport const ATAIID = {\r\n /** Validate & brand an existing capability id (throws if invalid). */\r\n validateCapability(id: string): ATAICapabilityID {\r\n validate(\"capability\", id);\r\n return id as ATAICapabilityID;\r\n },\r\n\r\n /** Validate & brand an existing prompt id (throws if invalid). */\r\n validatePrompt(id: string): ATAIPromptID {\r\n validate(\"prompt\", id);\r\n return id as ATAIPromptID;\r\n },\r\n\r\n /**\r\n * Build a capability id from parts (then validates & brands).\r\n * Format: cap.<app>.<area>.<object>.<verb>\r\n */\r\n makeCapability(parts: {\r\n app: string;\r\n area: string;\r\n target: string;\r\n action: string;\r\n }): ATAICapabilityID {\r\n const id = `cap.${joinSegments(parts.app, parts.area, parts.target, parts.action)}`;\r\n return ATAIID.validateCapability(id);\r\n },\r\n\r\n /**\r\n * Build a prompt id from parts (then validates & brands).\r\n * Format: prompt.<app>.<area>.<object>.<verb>.v<major>\r\n */\r\n makePrompt(parts: {\r\n app: string;\r\n area: string;\r\n target: string;\r\n action: string;\r\n v: number; // major version\r\n }): ATAIPromptID {\r\n const major = Math.max(0, Math.floor(parts.v));\r\n const id = `prompt.${joinSegments(parts.app, parts.area, parts.target, parts.action)}.v${major}`;\r\n return ATAIID.validatePrompt(id);\r\n },\r\n} as const;\r\n","import { ATAIID } from \"./ids\";\r\n\r\nexport const ATAIPrompts = {\r\n BPMS: {\r\n SYSTEM: {\r\n INTENT_DETECTION_V1: ATAIID.makePrompt({\r\n app: \"bpms\",\r\n area: \"system\",\r\n target: \"intent\",\r\n action: \"detection\",\r\n v: 1\r\n }),\r\n },\r\n FORMAKER: {\r\n VALUE_GENERATE_V1: ATAIID.makePrompt({\r\n app: \"bpms\",\r\n area: \"formmaker\",\r\n target: \"value\",\r\n action: \"generate\",\r\n v: 1,\r\n }),\r\n },\r\n APIMANAGER: {\r\n POST_RESPONSE_SCRIPT_GENERATE_V1: ATAIID.makePrompt({\r\n app: \"bpms\",\r\n area: \"apimanager\",\r\n target: \"post_response_script\",\r\n action: \"generate\",\r\n v: 1,\r\n }),\r\n },\r\n },\r\n} as const;\r\n","import { ATAIID } from \"./ids\";\r\n\r\nexport const ATAICapabilities = {\r\n BPMS: {\r\n FORMAKER: {\r\n FORM_GENERATE: ATAIID.makeCapability({\r\n app: \"bpms\",\r\n area: \"formmaker\",\r\n target: \"form\",\r\n action: \"generate\",\r\n }),\r\n },\r\n APIMANAGER: {\r\n POST_RESPONSE_SCRIPT_GENERATE: ATAIID.makeCapability({\r\n app: \"bpms\",\r\n area: \"apimanager\",\r\n target: \"post_response_script\",\r\n action: \"generate\",\r\n }),\r\n },\r\n },\r\n} as const;\r\n","export * from \"./core/protocol/errors\";\r\n\r\nimport { ATAPIErrorCodeMap } from \"./core/protocol/errors\";\r\n\r\nimport { ATAIID } from \"./ai/protocol/ids\";\r\nimport { ATAIPrompts } from \"./ai/protocol/prompts\";\r\nimport { ATAICapabilities } from \"./ai/protocol/capabilities\";\r\n\r\nexport const ATAI = {\r\n ID: ATAIID,\r\n Prompts: ATAIPrompts,\r\n Capabilities: ATAICapabilities,\r\n} as const;\r\n\r\nexport const ATProtocol = {\r\n ATAPIErrorCodeMap,\r\n AI: ATAI,\r\n} as const;\r\n\r\nexport type ATAICapabilityID =\r\n import(\"./ai/protocol/ids\").ATAICapabilityID;\r\nexport type ATAIPromptID =\r\n import(\"./ai/protocol/ids\").ATAIPromptID;\r\n\r\nexport type ATAPIErrorCode =\r\n import(\"./core/protocol/errors\").ATAPIErrorCode;\r\n"],"mappings":";;;AAAO,IAAM,oBAAoB;AAAA,EAC7B,oBAAoB;AAAA,EACpB,sBAAsB;AAAA,EACtB,4BAA4B;AAChC;;;ACCA,IAAM,KAAK;AAAA,EACP,YAAY;AAAA,EACZ,QAAQ;AACZ;AAEA,SAAS,SAAS,MAAuB,IAAkB;AACvD,MAAI,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG;AACpB,UAAM,IAAI,MAAM,yBAAyB,IAAI,SAAS,EAAE,GAAG;AAAA,EAC/D;AACJ;AAWA,SAAS,iBAAiB,KAAqB;AAC3C,SAAO,IACF,KAAK,EACL,YAAY,EACZ,QAAQ,WAAW,GAAG,EACtB,QAAQ,eAAe,EAAE,EACzB,QAAQ,QAAQ,GAAG,EACnB,QAAQ,cAAc,EAAE;AACjC;AAEA,SAAS,gBAAgB,MAAwB;AAC7C,SAAO,KAAK,IAAI,gBAAgB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAC9D;AAEO,IAAM,SAAS;AAAA;AAAA,EAElB,mBAAmB,IAA8B;AAC7C,aAAS,cAAc,EAAE;AACzB,WAAO;AAAA,EACX;AAAA;AAAA,EAGA,eAAe,IAA0B;AACrC,aAAS,UAAU,EAAE;AACrB,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAe,OAKM;AACjB,UAAM,KAAK,OAAO,aAAa,MAAM,KAAK,MAAM,MAAM,MAAM,QAAQ,MAAM,MAAM,CAAC;AACjF,WAAO,OAAO,mBAAmB,EAAE;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAW,OAMM;AACb,UAAM,QAAQ,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,CAAC,CAAC;AAC7C,UAAM,KAAK,UAAU,aAAa,MAAM,KAAK,MAAM,MAAM,MAAM,QAAQ,MAAM,MAAM,CAAC,KAAK,KAAK;AAC9F,WAAO,OAAO,eAAe,EAAE;AAAA,EACnC;AACJ;;;AC/EO,IAAM,cAAc;AAAA,EACvB,MAAM;AAAA,IACF,QAAQ;AAAA,MACJ,qBAAqB,OAAO,WAAW;AAAA,QACnC,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,GAAG;AAAA,MACP,CAAC;AAAA,IACL;AAAA,IACA,UAAU;AAAA,MACN,mBAAmB,OAAO,WAAW;AAAA,QACjC,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,GAAG;AAAA,MACP,CAAC;AAAA,IACL;AAAA,IACA,YAAY;AAAA,MACR,kCAAkC,OAAO,WAAW;AAAA,QAChD,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,GAAG;AAAA,MACP,CAAC;AAAA,IACL;AAAA,EACJ;AACJ;;;AC9BO,IAAM,mBAAmB;AAAA,EAC5B,MAAM;AAAA,IACF,UAAU;AAAA,MACN,eAAe,OAAO,eAAe;AAAA,QACjC,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,MACZ,CAAC;AAAA,IACL;AAAA,IACA,YAAY;AAAA,MACR,+BAA+B,OAAO,eAAe;AAAA,QACjD,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,MACZ,CAAC;AAAA,IACL;AAAA,EACJ;AACJ;;;ACbO,IAAM,OAAO;AAAA,EAChB,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,cAAc;AAClB;AAEO,IAAM,aAAa;AAAA,EACtB;AAAA,EACA,IAAI;AACR;","names":[]}
1
+ {"version":3,"sources":["../src/core/protocol/errors.ts","../src/ai/protocol/ids.ts","../src/ai/protocol/prompts.ts","../src/ai/protocol/capabilities.ts","../src/protocol.ts"],"sourcesContent":["export const ATAPIErrorCodeMap = {\r\n AI_SESSION_EXPIRED: 4501,\r\n AI_SESSION_NOT_FOUND: 4502,\r\n AI_REQUEST_CONTEXT_MISSING: 4503,\r\n} as const;\r\n\r\nexport type ATAPIErrorCode = typeof ATAPIErrorCodeMap[keyof typeof ATAPIErrorCodeMap];\r\n","type Brand<T, B extends string> = T & { readonly __brand: B };\r\n\r\nexport type ATAICapabilityID = Brand<string, \"ATAICapabilityID\">;\r\nexport type ATAIPromptID = Brand<string, \"ATAIPromptID\">;\r\n\r\n// allow underscores inside each segment\r\nconst SEG = `[a-z0-9_]+`;\r\n\r\nconst RX = {\r\n capability: new RegExp(`^cap\\\\.${SEG}(?:\\\\.${SEG}){3,}$`, \"i\"),\r\n prompt: new RegExp(`^prompt\\\\.${SEG}(?:\\\\.${SEG}){3,}\\\\.v[0-9]+$`, \"i\"),\r\n} as const;\r\n\r\nfunction validate(kind: keyof typeof RX, id: string): void {\r\n if (!RX[kind].test(id)) {\r\n throw new Error(`[AI-PROTOCOL] Invalid ${kind} id: \"${id}\"`);\r\n }\r\n}\r\n\r\n/**\r\n * Normalize a segment for IDs (snake_case).\r\n * - trims\r\n * - lowercases\r\n * - converts spaces and dashes to underscores\r\n * - removes illegal chars (keeps a-z0-9 and _)\r\n * - collapses multiple underscores\r\n * - trims leading/trailing underscores\r\n */\r\nfunction normalizeSegment(seg: string): string {\r\n return seg\r\n .trim()\r\n .toLowerCase()\r\n .replace(/[\\s-]+/g, \"_\") // spaces/dashes -> _\r\n .replace(/[^a-z0-9_]/g, \"\") // keep only a-z0-9_\r\n .replace(/_+/g, \"_\") // collapse __\r\n .replace(/^_+|_+$/g, \"\"); // trim edges\r\n}\r\n\r\nfunction joinSegments(...segs: string[]): string {\r\n return segs.map(normalizeSegment).filter(Boolean).join(\".\");\r\n}\r\n\r\nexport const ATAIID = {\r\n validateCapability(id: string): ATAICapabilityID {\r\n validate(\"capability\", id);\r\n return id as ATAICapabilityID;\r\n },\r\n\r\n validatePrompt(id: string): ATAIPromptID {\r\n validate(\"prompt\", id);\r\n return id as ATAIPromptID;\r\n },\r\n\r\n makeCapability(parts: {\r\n app: string;\r\n area: string;\r\n target: string;\r\n action: string;\r\n }): ATAICapabilityID {\r\n const id = `cap.${joinSegments(parts.app, parts.area, parts.target, parts.action)}`;\r\n return ATAIID.validateCapability(id);\r\n },\r\n\r\n makePrompt(parts: {\r\n app: string;\r\n area: string;\r\n target: string;\r\n action: string;\r\n v: number;\r\n }): ATAIPromptID {\r\n const major = Math.max(0, Math.floor(parts.v));\r\n const id = `prompt.${joinSegments(parts.app, parts.area, parts.target, parts.action)}.v${major}`;\r\n return ATAIID.validatePrompt(id);\r\n },\r\n} as const;\r\n","import { ATAIID } from \"./ids\";\r\n\r\nexport const ATAIPrompts = {\r\n BPMS: {\r\n SYSTEM: {\r\n INTENT_DETECTION_V1: ATAIID.makePrompt({\r\n app: \"bpms\",\r\n area: \"system\",\r\n target: \"intent\",\r\n action: \"detection\",\r\n v: 1\r\n }),\r\n },\r\n FORMAKER: {\r\n VALUE_GENERATE_V1: ATAIID.makePrompt({\r\n app: \"bpms\",\r\n area: \"formmaker\",\r\n target: \"value\",\r\n action: \"generate\",\r\n v: 1,\r\n }),\r\n },\r\n APIMANAGER: {\r\n POST_RESPONSE_SCRIPT_GENERATE_V1: ATAIID.makePrompt({\r\n app: \"bpms\",\r\n area: \"apimanager\",\r\n target: \"post_response_script\",\r\n action: \"generate\",\r\n v: 1,\r\n }),\r\n },\r\n },\r\n} as const;\r\n","import { ATAIID } from \"./ids\";\r\n\r\nexport const ATAICapabilities = {\r\n BPMS: {\r\n FORMAKER: {\r\n FORM_GENERATE: ATAIID.makeCapability({\r\n app: \"bpms\",\r\n area: \"formmaker\",\r\n target: \"form\",\r\n action: \"generate\",\r\n }),\r\n },\r\n APIMANAGER: {\r\n POST_RESPONSE_SCRIPT_GENERATE: ATAIID.makeCapability({\r\n app: \"bpms\",\r\n area: \"apimanager\",\r\n target: \"post_response_script\",\r\n action: \"generate\",\r\n }),\r\n },\r\n },\r\n} as const;\r\n","export * from \"./core/protocol/errors\";\r\n\r\nimport { ATAPIErrorCodeMap } from \"./core/protocol/errors\";\r\n\r\nimport { ATAIID } from \"./ai/protocol/ids\";\r\nimport { ATAIPrompts } from \"./ai/protocol/prompts\";\r\nimport { ATAICapabilities } from \"./ai/protocol/capabilities\";\r\n\r\nexport const ATAI = {\r\n ID: ATAIID,\r\n Prompts: ATAIPrompts,\r\n Capabilities: ATAICapabilities,\r\n} as const;\r\n\r\nexport const ATProtocol = {\r\n ATAPIErrorCodeMap,\r\n AI: ATAI,\r\n} as const;\r\n\r\nexport type ATAICapabilityID =\r\n import(\"./ai/protocol/ids\").ATAICapabilityID;\r\nexport type ATAIPromptID =\r\n import(\"./ai/protocol/ids\").ATAIPromptID;\r\n\r\nexport type ATAPIErrorCode =\r\n import(\"./core/protocol/errors\").ATAPIErrorCode;\r\n"],"mappings":";;;AAAO,IAAM,oBAAoB;AAAA,EAC7B,oBAAoB;AAAA,EACpB,sBAAsB;AAAA,EACtB,4BAA4B;AAChC;;;ACEA,IAAM,MAAM;AAEZ,IAAM,KAAK;AAAA,EACP,YAAY,IAAI,OAAO,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG;AAAA,EAC7D,QAAQ,IAAI,OAAO,aAAa,GAAG,SAAS,GAAG,oBAAoB,GAAG;AAC1E;AAEA,SAAS,SAAS,MAAuB,IAAkB;AACvD,MAAI,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG;AACpB,UAAM,IAAI,MAAM,yBAAyB,IAAI,SAAS,EAAE,GAAG;AAAA,EAC/D;AACJ;AAWA,SAAS,iBAAiB,KAAqB;AAC3C,SAAO,IACF,KAAK,EACL,YAAY,EACZ,QAAQ,WAAW,GAAG,EACtB,QAAQ,eAAe,EAAE,EACzB,QAAQ,OAAO,GAAG,EAClB,QAAQ,YAAY,EAAE;AAC/B;AAEA,SAAS,gBAAgB,MAAwB;AAC7C,SAAO,KAAK,IAAI,gBAAgB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAC9D;AAEO,IAAM,SAAS;AAAA,EAClB,mBAAmB,IAA8B;AAC7C,aAAS,cAAc,EAAE;AACzB,WAAO;AAAA,EACX;AAAA,EAEA,eAAe,IAA0B;AACrC,aAAS,UAAU,EAAE;AACrB,WAAO;AAAA,EACX;AAAA,EAEA,eAAe,OAKM;AACjB,UAAM,KAAK,OAAO,aAAa,MAAM,KAAK,MAAM,MAAM,MAAM,QAAQ,MAAM,MAAM,CAAC;AACjF,WAAO,OAAO,mBAAmB,EAAE;AAAA,EACvC;AAAA,EAEA,WAAW,OAMM;AACb,UAAM,QAAQ,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,CAAC,CAAC;AAC7C,UAAM,KAAK,UAAU,aAAa,MAAM,KAAK,MAAM,MAAM,MAAM,QAAQ,MAAM,MAAM,CAAC,KAAK,KAAK;AAC9F,WAAO,OAAO,eAAe,EAAE;AAAA,EACnC;AACJ;;;ACxEO,IAAM,cAAc;AAAA,EACvB,MAAM;AAAA,IACF,QAAQ;AAAA,MACJ,qBAAqB,OAAO,WAAW;AAAA,QACnC,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,GAAG;AAAA,MACP,CAAC;AAAA,IACL;AAAA,IACA,UAAU;AAAA,MACN,mBAAmB,OAAO,WAAW;AAAA,QACjC,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,GAAG;AAAA,MACP,CAAC;AAAA,IACL;AAAA,IACA,YAAY;AAAA,MACR,kCAAkC,OAAO,WAAW;AAAA,QAChD,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,GAAG;AAAA,MACP,CAAC;AAAA,IACL;AAAA,EACJ;AACJ;;;AC9BO,IAAM,mBAAmB;AAAA,EAC5B,MAAM;AAAA,IACF,UAAU;AAAA,MACN,eAAe,OAAO,eAAe;AAAA,QACjC,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,MACZ,CAAC;AAAA,IACL;AAAA,IACA,YAAY;AAAA,MACR,+BAA+B,OAAO,eAAe;AAAA,QACjD,KAAK;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,MACZ,CAAC;AAAA,IACL;AAAA,EACJ;AACJ;;;ACbO,IAAM,OAAO;AAAA,EAChB,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,cAAc;AAClB;AAEO,IAAM,aAAa;AAAA,EACtB;AAAA,EACA,IAAI;AACR;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "at-shared-types",
3
- "version": "1.2.6",
3
+ "version": "1.2.8",
4
4
  "type": "commonjs",
5
5
  "main": "./dist/index.cjs",
6
6
  "types": "./dist/index.d.ts",