@awiki/dsh-plugin 0.2.4 → 0.2.5

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 (115) hide show
  1. package/README.md +80 -11
  2. package/README.zh.md +67 -12
  3. package/THIRD_PARTY_NOTICES.md +8 -1
  4. package/cordis.patch.yml +13 -0
  5. package/lib/client.js +8223 -1939
  6. package/lib/client.js.map +1 -1
  7. package/lib/index.js +1486 -59
  8. package/lib/model-proxy-contract.js +89 -0
  9. package/lib/model-proxy.js +383 -0
  10. package/lib/provider.js +2 -1
  11. package/lib/sdk-adapter-DKgkyApB.mjs +669 -0
  12. package/lib/typert.host.js +470 -482
  13. package/lib/typert.remote-client.d.ts +15 -1
  14. package/lib/typert.remote-client.d.ts.map +1 -1
  15. package/lib/typert.remote-client.js +469 -103
  16. package/lib/types/attachment-cache.d.ts +28 -0
  17. package/lib/types/attachment-cache.d.ts.map +1 -0
  18. package/lib/types/attachment-cache.js +194 -0
  19. package/lib/types/attachment-cache.js.map +1 -0
  20. package/lib/types/client/AwikiMail.d.ts +14 -0
  21. package/lib/types/client/AwikiMail.d.ts.map +1 -0
  22. package/lib/types/client/AwikiMail.js +260 -0
  23. package/lib/types/client/AwikiMail.js.map +1 -0
  24. package/lib/types/client/AwikiOnboarding.d.ts +22 -0
  25. package/lib/types/client/AwikiOnboarding.d.ts.map +1 -0
  26. package/lib/types/client/AwikiOnboarding.js +87 -0
  27. package/lib/types/client/AwikiOnboarding.js.map +1 -0
  28. package/lib/types/client/AwikiOverlay.d.ts +15 -0
  29. package/lib/types/client/AwikiOverlay.d.ts.map +1 -1
  30. package/lib/types/client/AwikiOverlay.js +251 -20
  31. package/lib/types/client/AwikiOverlay.js.map +1 -1
  32. package/lib/types/client/AwikiSettingsSection.d.ts +20 -4
  33. package/lib/types/client/AwikiSettingsSection.d.ts.map +1 -1
  34. package/lib/types/client/AwikiSettingsSection.js +279 -23
  35. package/lib/types/client/AwikiSettingsSection.js.map +1 -1
  36. package/lib/types/client/RechargeComingSoonDialog.d.ts +11 -0
  37. package/lib/types/client/RechargeComingSoonDialog.d.ts.map +1 -0
  38. package/lib/types/client/RechargeComingSoonDialog.js +8 -0
  39. package/lib/types/client/RechargeComingSoonDialog.js.map +1 -0
  40. package/lib/types/client/controller.d.ts +82 -4
  41. package/lib/types/client/controller.d.ts.map +1 -1
  42. package/lib/types/client/controller.js +517 -74
  43. package/lib/types/client/controller.js.map +1 -1
  44. package/lib/types/client/image-cache.d.ts +20 -0
  45. package/lib/types/client/image-cache.d.ts.map +1 -0
  46. package/lib/types/client/image-cache.js +177 -0
  47. package/lib/types/client/image-cache.js.map +1 -0
  48. package/lib/types/client/index.d.ts +2 -0
  49. package/lib/types/client/index.d.ts.map +1 -1
  50. package/lib/types/client/index.js +84 -41
  51. package/lib/types/client/index.js.map +1 -1
  52. package/lib/types/client/model-account-settings-availability.d.ts +4 -0
  53. package/lib/types/client/model-account-settings-availability.d.ts.map +1 -0
  54. package/lib/types/client/model-account-settings-availability.js +4 -0
  55. package/lib/types/client/model-account-settings-availability.js.map +1 -0
  56. package/lib/types/client/model-availability-controller.d.ts +27 -0
  57. package/lib/types/client/model-availability-controller.d.ts.map +1 -0
  58. package/lib/types/client/model-availability-controller.js +111 -0
  59. package/lib/types/client/model-availability-controller.js.map +1 -0
  60. package/lib/types/client/model-proxy-controller.d.ts +41 -0
  61. package/lib/types/client/model-proxy-controller.d.ts.map +1 -0
  62. package/lib/types/client/model-proxy-controller.js +241 -0
  63. package/lib/types/client/model-proxy-controller.js.map +1 -0
  64. package/lib/types/client/recharge-availability.d.ts +6 -0
  65. package/lib/types/client/recharge-availability.d.ts.map +1 -0
  66. package/lib/types/client/recharge-availability.js +6 -0
  67. package/lib/types/client/recharge-availability.js.map +1 -0
  68. package/lib/types/client/settings-locales.d.ts +1 -1
  69. package/lib/types/client/settings-locales.d.ts.map +1 -1
  70. package/lib/types/client/settings-locales.js +180 -2
  71. package/lib/types/client/settings-locales.js.map +1 -1
  72. package/lib/types/client/slots.d.ts +15 -2
  73. package/lib/types/client/slots.d.ts.map +1 -1
  74. package/lib/types/index.d.ts +56 -2
  75. package/lib/types/index.d.ts.map +1 -1
  76. package/lib/types/index.js +462 -31
  77. package/lib/types/index.js.map +1 -1
  78. package/lib/types/listener-state.d.ts +23 -0
  79. package/lib/types/listener-state.d.ts.map +1 -0
  80. package/lib/types/listener-state.js +124 -0
  81. package/lib/types/listener-state.js.map +1 -0
  82. package/lib/types/listener.d.ts +96 -0
  83. package/lib/types/listener.d.ts.map +1 -0
  84. package/lib/types/listener.js +575 -0
  85. package/lib/types/listener.js.map +1 -0
  86. package/lib/types/mail.d.ts +8 -0
  87. package/lib/types/mail.d.ts.map +1 -0
  88. package/lib/types/mail.js +75 -0
  89. package/lib/types/mail.js.map +1 -0
  90. package/lib/types/model-proxy-contract.d.ts +61 -0
  91. package/lib/types/model-proxy-contract.d.ts.map +1 -0
  92. package/lib/types/model-proxy-contract.js +129 -0
  93. package/lib/types/model-proxy-contract.js.map +1 -0
  94. package/lib/types/model-proxy.d.ts +14 -0
  95. package/lib/types/model-proxy.d.ts.map +1 -0
  96. package/lib/types/model-proxy.js +371 -0
  97. package/lib/types/model-proxy.js.map +1 -0
  98. package/lib/types/provider-api.d.ts +78 -2
  99. package/lib/types/provider-api.d.ts.map +1 -1
  100. package/lib/types/provider.d.ts.map +1 -1
  101. package/lib/types/provider.js +1 -0
  102. package/lib/types/provider.js.map +1 -1
  103. package/lib/types/sdk-adapter.d.ts +26 -2
  104. package/lib/types/sdk-adapter.d.ts.map +1 -1
  105. package/lib/types/sdk-adapter.js +380 -24
  106. package/lib/types/sdk-adapter.js.map +1 -1
  107. package/lib/types/tools.d.ts +10 -0
  108. package/lib/types/tools.d.ts.map +1 -1
  109. package/lib/types/tools.js +98 -0
  110. package/lib/types/tools.js.map +1 -1
  111. package/lib/types/types.d.ts +103 -1
  112. package/lib/types/types.d.ts.map +1 -1
  113. package/lib/types/types.js.map +1 -1
  114. package/package.json +30 -5
  115. package/lib/sdk-adapter-DK6RqV-c.mjs +0 -355
@@ -0,0 +1,75 @@
1
+ /** Host-owned validation for on-demand mail requests. */
2
+ const U32_MAX = 0xffff_ffff;
3
+ const MAX_MESSAGE_IDS = 100;
4
+ const MAX_RECIPIENTS = 20;
5
+ function reject() {
6
+ throw new TypeError('invalid AWiki mail request');
7
+ }
8
+ function token(value, maxCharacters) {
9
+ if (typeof value !== 'string'
10
+ || value.length === 0
11
+ || value.trim() !== value
12
+ || Array.from(value).length > maxCharacters
13
+ || /[\u0000-\u001f\u007f-\u009f]/u.test(value))
14
+ reject();
15
+ return value;
16
+ }
17
+ function address(value) {
18
+ if (typeof value !== 'string')
19
+ reject();
20
+ const length = Array.from(value).length;
21
+ if (length < 3
22
+ || length > 320
23
+ || !value.includes('@')
24
+ || /[\s\u0000-\u001f\u007f-\u009f]/u.test(value))
25
+ reject();
26
+ return value;
27
+ }
28
+ /** Resolve mailbox defaults before the provider is invoked. */
29
+ export function mailInboxRequest(request = {}) {
30
+ const folder = token(request.folder ?? 'inbox', 64);
31
+ const limit = request.limit ?? 20;
32
+ const offset = request.offset ?? 0;
33
+ const unreadOnly = request.unreadOnly ?? false;
34
+ if (!Number.isSafeInteger(limit) || limit < 1 || limit > 100)
35
+ reject();
36
+ if (!Number.isSafeInteger(offset) || offset < 0 || offset > U32_MAX)
37
+ reject();
38
+ if (typeof unreadOnly !== 'boolean')
39
+ reject();
40
+ return { folder, unreadOnly, limit, offset };
41
+ }
42
+ export function mailReadRequest(request) {
43
+ return { messageId: token(request.messageId, 2_048) };
44
+ }
45
+ export function mailMarkReadRequest(request) {
46
+ if (!Array.isArray(request.messageIds)
47
+ || request.messageIds.length === 0
48
+ || request.messageIds.length > MAX_MESSAGE_IDS)
49
+ reject();
50
+ return {
51
+ messageIds: request.messageIds.map(value => token(value, 2_048)),
52
+ };
53
+ }
54
+ export function mailSendRequest(request) {
55
+ if (!Array.isArray(request.to) || request.to.length === 0 || !Array.isArray(request.cc ?? []))
56
+ reject();
57
+ const to = request.to.map(address);
58
+ const cc = (request.cc ?? []).map(address);
59
+ if (to.length + cc.length > MAX_RECIPIENTS)
60
+ reject();
61
+ const recipients = new Set([...to, ...cc]);
62
+ if (recipients.size !== to.length + cc.length)
63
+ reject();
64
+ if (typeof request.subject !== 'string'
65
+ || request.subject.length === 0
66
+ || request.subject.trim() !== request.subject
67
+ || Buffer.byteLength(request.subject, 'utf8') > 1_024)
68
+ reject();
69
+ if (typeof request.bodyText !== 'string'
70
+ || request.bodyText.trim().length === 0
71
+ || Buffer.byteLength(request.bodyText, 'utf8') > 65_536)
72
+ reject();
73
+ return { to, cc, subject: request.subject, bodyText: request.bodyText };
74
+ }
75
+ //# sourceMappingURL=mail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail.js","sourceRoot":"","sources":["../../src/mail.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /** Browser-safe contracts for the loopback AWiki-hosted DeepSeek proxy channel. */
2
+ export declare const AWIKI_MODEL_PROXY_RPC_CHANNEL = "/awiki-model-proxy";
3
+ export declare const AWIKI_MODEL_PROXY_RPC_ENDPOINTS: {
4
+ readonly status: "status";
5
+ readonly usage: "usage";
6
+ readonly setEnabled: "set-enabled";
7
+ readonly createRecharge: "create-recharge";
8
+ readonly rechargeStatus: "recharge-status";
9
+ readonly closeRecharge: "close-recharge";
10
+ };
11
+ export interface AwikiModelProxyAccount {
12
+ readonly did: string;
13
+ readonly balance_cents: number;
14
+ readonly balance: string;
15
+ readonly currency: 'CNY';
16
+ readonly model_access_available: boolean;
17
+ readonly model_access_reason: string | null;
18
+ readonly billing_mode: 'strict' | 'development_bypass';
19
+ readonly payments_available: boolean;
20
+ }
21
+ export interface AwikiModelProxyUsage {
22
+ readonly id: number;
23
+ readonly endpoint: string;
24
+ readonly model: string;
25
+ readonly cache_hit_tokens: number;
26
+ readonly cache_miss_tokens: number;
27
+ readonly completion_tokens: number;
28
+ readonly billing_mode: 'strict' | 'development_bypass';
29
+ readonly calculated_cost_micros: number | null;
30
+ readonly charged_micros: number;
31
+ readonly estimated: boolean;
32
+ readonly created_at: string;
33
+ }
34
+ export interface AwikiModelProxyStatus {
35
+ readonly enabled: boolean;
36
+ readonly account: AwikiModelProxyAccount;
37
+ readonly pending_recharge_order: AwikiModelProxyRechargeOrder | null;
38
+ readonly recommended_model: 'deepseek-v4-flash';
39
+ readonly models: readonly ['deepseek-v4-flash', 'deepseek-v4-pro'];
40
+ }
41
+ export interface AwikiModelProxyPaymentAction {
42
+ readonly type: 'redirect_url' | 'qr_code';
43
+ readonly data: string;
44
+ }
45
+ export interface AwikiModelProxyRechargeOrder {
46
+ readonly out_trade_no: string;
47
+ readonly amount_cents: number;
48
+ readonly status: 'pending' | 'paid' | 'closed';
49
+ readonly provider: string;
50
+ readonly payment_method: string;
51
+ readonly created_at: string;
52
+ readonly payment_action?: AwikiModelProxyPaymentAction;
53
+ }
54
+ export interface AwikiModelProxyCloseRechargeResult {
55
+ readonly closed: true;
56
+ }
57
+ export declare function decodeModelProxyStatus(value: unknown): AwikiModelProxyStatus | undefined;
58
+ export declare function decodeModelProxyUsage(value: unknown): AwikiModelProxyUsage[] | undefined;
59
+ export declare function decodeRechargeOrder(value: unknown): AwikiModelProxyRechargeOrder | undefined;
60
+ export declare function decodeCloseRechargeResult(value: unknown): AwikiModelProxyCloseRechargeResult | undefined;
61
+ //# sourceMappingURL=model-proxy-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-proxy-contract.d.ts","sourceRoot":"","sources":["../../src/model-proxy-contract.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,eAAO,MAAM,6BAA6B,uBAAuB,CAAA;AAEjE,eAAO,MAAM,+BAA+B;;;;;;;CAOlC,CAAA;AAEV,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAA;IACxB,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAA;IACxC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C,QAAQ,CAAC,YAAY,EAAE,QAAQ,GAAG,oBAAoB,CAAA;IACtD,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAA;CACrC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,YAAY,EAAE,QAAQ,GAAG,oBAAoB,CAAA;IACtD,QAAQ,CAAC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAA;IACxC,QAAQ,CAAC,sBAAsB,EAAE,4BAA4B,GAAG,IAAI,CAAA;IACpE,QAAQ,CAAC,iBAAiB,EAAE,mBAAmB,CAAA;IAC/C,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAA;CACnE;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,CAAA;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAA;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,4BAA4B,CAAA;CACvD;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAA;CACtB;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,GAAG,SAAS,CAqBxF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,EAAE,GAAG,SAAS,CAIxF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,4BAA4B,GAAG,SAAS,CA2B5F;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,kCAAkC,GAAG,SAAS,CAExG"}
@@ -0,0 +1,129 @@
1
+ /** Browser-safe contracts for the loopback AWiki-hosted DeepSeek proxy channel. */
2
+ export const AWIKI_MODEL_PROXY_RPC_CHANNEL = '/awiki-model-proxy';
3
+ export const AWIKI_MODEL_PROXY_RPC_ENDPOINTS = {
4
+ status: 'status',
5
+ usage: 'usage',
6
+ setEnabled: 'set-enabled',
7
+ createRecharge: 'create-recharge',
8
+ rechargeStatus: 'recharge-status',
9
+ closeRecharge: 'close-recharge',
10
+ };
11
+ export function decodeModelProxyStatus(value) {
12
+ if (!isRecord(value) || typeof value.enabled !== 'boolean')
13
+ return undefined;
14
+ const account = decodeAccount(value.account);
15
+ if (account === undefined)
16
+ return undefined;
17
+ const pendingRechargeOrder = value.pending_recharge_order === null
18
+ ? null
19
+ : decodeRechargeOrder(value.pending_recharge_order);
20
+ if (pendingRechargeOrder === undefined
21
+ || (pendingRechargeOrder !== null && pendingRechargeOrder.status !== 'pending'))
22
+ return undefined;
23
+ if (value.recommended_model !== 'deepseek-v4-flash'
24
+ || !Array.isArray(value.models)
25
+ || value.models.length !== 2
26
+ || value.models[0] !== 'deepseek-v4-flash'
27
+ || value.models[1] !== 'deepseek-v4-pro')
28
+ return undefined;
29
+ return {
30
+ enabled: value.enabled,
31
+ account,
32
+ pending_recharge_order: pendingRechargeOrder,
33
+ recommended_model: 'deepseek-v4-flash',
34
+ models: ['deepseek-v4-flash', 'deepseek-v4-pro'],
35
+ };
36
+ }
37
+ export function decodeModelProxyUsage(value) {
38
+ if (!Array.isArray(value))
39
+ return undefined;
40
+ const usage = value.map(decodeUsage);
41
+ return usage.every((item) => item !== undefined) ? usage : undefined;
42
+ }
43
+ export function decodeRechargeOrder(value) {
44
+ if (!isRecord(value)
45
+ || typeof value.out_trade_no !== 'string'
46
+ || !Number.isSafeInteger(value.amount_cents)
47
+ || !['pending', 'paid', 'closed'].includes(String(value.status))
48
+ || typeof value.provider !== 'string'
49
+ || typeof value.payment_method !== 'string'
50
+ || typeof value.created_at !== 'string')
51
+ return undefined;
52
+ if (value.payment_action !== undefined
53
+ && (!isRecord(value.payment_action)
54
+ || !['redirect_url', 'qr_code'].includes(String(value.payment_action.type))
55
+ || typeof value.payment_action.data !== 'string'))
56
+ return undefined;
57
+ const action = value.payment_action;
58
+ return {
59
+ out_trade_no: value.out_trade_no,
60
+ amount_cents: value.amount_cents,
61
+ status: value.status,
62
+ provider: value.provider,
63
+ payment_method: value.payment_method,
64
+ created_at: value.created_at,
65
+ ...action === undefined ? {} : {
66
+ payment_action: {
67
+ type: action.type,
68
+ data: action.data,
69
+ },
70
+ },
71
+ };
72
+ }
73
+ export function decodeCloseRechargeResult(value) {
74
+ return isRecord(value) && value.closed === true ? { closed: true } : undefined;
75
+ }
76
+ function decodeAccount(value) {
77
+ if (!(isRecord(value)
78
+ && typeof value.did === 'string'
79
+ && Number.isSafeInteger(value.balance_cents)
80
+ && typeof value.balance === 'string'
81
+ && value.currency === 'CNY'
82
+ && typeof value.model_access_available === 'boolean'
83
+ && (value.model_access_reason === null || typeof value.model_access_reason === 'string')
84
+ && ['strict', 'development_bypass'].includes(String(value.billing_mode))
85
+ && typeof value.payments_available === 'boolean'))
86
+ return undefined;
87
+ return {
88
+ did: value.did,
89
+ balance_cents: value.balance_cents,
90
+ balance: value.balance,
91
+ currency: 'CNY',
92
+ model_access_available: value.model_access_available,
93
+ model_access_reason: value.model_access_reason,
94
+ billing_mode: value.billing_mode,
95
+ payments_available: value.payments_available,
96
+ };
97
+ }
98
+ function decodeUsage(value) {
99
+ if (!(isRecord(value)
100
+ && Number.isSafeInteger(value.id)
101
+ && typeof value.endpoint === 'string'
102
+ && typeof value.model === 'string'
103
+ && Number.isSafeInteger(value.cache_hit_tokens)
104
+ && Number.isSafeInteger(value.cache_miss_tokens)
105
+ && Number.isSafeInteger(value.completion_tokens)
106
+ && ['strict', 'development_bypass'].includes(String(value.billing_mode))
107
+ && (value.calculated_cost_micros === null || Number.isSafeInteger(value.calculated_cost_micros))
108
+ && Number.isSafeInteger(value.charged_micros)
109
+ && typeof value.estimated === 'boolean'
110
+ && typeof value.created_at === 'string'))
111
+ return undefined;
112
+ return {
113
+ id: value.id,
114
+ endpoint: value.endpoint,
115
+ model: value.model,
116
+ cache_hit_tokens: value.cache_hit_tokens,
117
+ cache_miss_tokens: value.cache_miss_tokens,
118
+ completion_tokens: value.completion_tokens,
119
+ billing_mode: value.billing_mode,
120
+ calculated_cost_micros: value.calculated_cost_micros,
121
+ charged_micros: value.charged_micros,
122
+ estimated: value.estimated,
123
+ created_at: value.created_at,
124
+ };
125
+ }
126
+ function isRecord(value) {
127
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
128
+ }
129
+ //# sourceMappingURL=model-proxy-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-proxy-contract.js","sourceRoot":"","sources":["../../src/model-proxy-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /** Host-only AWiki-authenticated model-proxy provider and loopback account API. */
2
+ import type { Context } from '@deepseek-ai/cordis';
3
+ import z from '@deepseek-ai/schemastery';
4
+ export declare const name = "awiki-model-proxy";
5
+ export declare const inject: string[];
6
+ export interface Config {
7
+ readonly baseURL?: string;
8
+ readonly contextWindow?: number;
9
+ readonly maxTokens?: number;
10
+ readonly tokenRefreshSkewSeconds?: number;
11
+ }
12
+ export declare const Config: z<Config>;
13
+ export declare function apply(ctx: Context, input?: Config): void;
14
+ //# sourceMappingURL=model-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-proxy.d.ts","sourceRoot":"","sources":["../../src/model-proxy.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAoBxC,eAAO,MAAM,IAAI,sBAAsB,CAAA;AACvC,eAAO,MAAM,MAAM,UAAkE,CAAA;AAuBrF,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAA;CAC1C;AAED,eAAO,MAAM,MAAM,EAAE,CAAC,CAAC,MAAM,CAK3B,CAAA;AAcF,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,GAAE,MAAW,GAAG,IAAI,CAiF5D"}