@zhin.js/plugin-calendar 0.1.11 → 0.1.13

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,44 @@
1
1
  # @zhin.js/plugin-calendar
2
2
 
3
+ ## 0.1.13
4
+
5
+ ### Patch Changes
6
+
7
+ - aa41889: Upgrade official business plugins with declarative Console pages & AI skills/tools, decompose core monolith modules, and polish scaffolding DX:
8
+
9
+ - **Official Plugin Ecosystem Upgrade**: Add declarative Console pages (`pages/index/index.ts`), `definePluginConsoleRpc` handlers (`src/console.ts`), and progressive-disclosure AI skills/tools (`skills/<name>/tools/`) across `@zhin.js/plugin-ledger`, `@zhin.js/plugin-reminder`, `@zhin.js/plugin-rss`, `@zhin.js/plugin-calendar`, `@zhin.js/plugin-group-suite`, `@zhin.js/plugin-content-moderation`, `@zhin.js/process-monitor`, and `@zhin.js/plugin-game-hub`.
10
+ - **Core Monolith Decomposition**: Decompose 9 core monolith modules (`agent-core-run.ts`, `full-agent-turn-engine.ts`, `ingress-route.ts`, `request.ts`, `root-runtime.ts`, `account-runtime.ts`, `page-renderer.ts`, `console-rpc.ts`, and `console-rest-pages.ts`) into cohesive, acyclic submodules (`< 620` lines each) while preserving 100% of public exports.
11
+ - **Scaffolding & First-Screen DX**: Upgrade `create-zhin-app` and `@zhin.js/scaffold-wizard` to generate declarative `ConsolePageBlueprint` homepages and `definePluginConsoleRpc` status/ping endpoints in both `zh-CN` and `en`; upgrade `zhin new` (`@zhin.js/cli`) to include `pages/` and compile progressive-disclosure tools under `skills/**/tools/` and `agents/**/tools/`.
12
+
13
+ - Updated dependencies [6163abc]
14
+ - Updated dependencies [fed2c27]
15
+ - Updated dependencies [bc6ccb1]
16
+ - Updated dependencies [72b5a12]
17
+ - Updated dependencies [aa41889]
18
+ - Updated dependencies [4427e72]
19
+ - Updated dependencies [22bd14a]
20
+ - @zhin.js/client@1.1.25
21
+ - @zhin.js/page@1.1.15
22
+ - @zhin.js/im-contract@1.1.12
23
+ - @zhin.js/host-http@1.1.15
24
+ - @zhin.js/tool@1.1.16
25
+ - @zhin.js/skill@1.1.14
26
+
27
+ ## 0.1.12
28
+
29
+ ### Patch Changes
30
+
31
+ - Updated dependencies [299863a]
32
+ - Updated dependencies [bd524d1]
33
+ - Updated dependencies [126ae99]
34
+ - Updated dependencies [4fe49b5]
35
+ - Updated dependencies [0315ba0]
36
+ - Updated dependencies [00be764]
37
+ - @zhin.js/im-contract@1.1.11
38
+ - @zhin.js/tool@1.1.15
39
+ - @zhin.js/skill@1.1.13
40
+ - @zhin.js/host-http@1.1.14
41
+
3
42
  ## 0.1.11
4
43
 
5
44
  ### Patch Changes
package/README.md CHANGED
@@ -193,6 +193,10 @@ npx zhin-calendar-auth microsoft
193
193
 
194
194
  创建前应向用户确认标题、时间与时区。
195
195
 
196
+ ## Console 状态页 (`pages/index`)
197
+
198
+ 插件提供声明式 Console 页面(路由 `/calendar`,权限 `calendar:read`),通过 `plugin.<pluginId>.status` 只读展示当前日历后端(`provider`)、时区(`timezone`)、就绪状态(`ready`)、OAuth 回调路径(`oauthCallbackPath`)与工作时段(`workingHours`),不暴露任何客户端密钥或 `refresh_token`。
199
+
196
200
  ## Language / 语言
197
201
 
198
202
  授权命令按当前操作语言回复,OAuth 回调页面、完成通知和后续授权失效通知固定使用发起授权时的语言。refresh_token 轮换保留该语言和原完整通知目标。状态页中的授权指令由当前命令上下文解析真实前缀与插件命名空间;没有可用命令上下文时只描述授权入口,不猜测指令。
package/lib/config.d.ts CHANGED
@@ -11,12 +11,95 @@ export declare const calendarConfig: Schema<Schema.InputRecord<{
11
11
  calendar_url: Schema<string, string> & Schema.Present;
12
12
  username: Schema<string, string> & Schema.Present;
13
13
  password: Schema<string, string> & Schema.Present;
14
- }>, {
15
- enabled: boolean;
16
- calendar_url: string;
17
- username: string;
18
- password: string;
19
- } & {}>;
14
+ }>, Schema.RecordTypes<{
15
+ enabled: Schema<boolean, boolean> & Schema.Present;
16
+ calendar_url: Schema<string, string> & Schema.Present;
17
+ username: Schema<string, string> & Schema.Present;
18
+ password: Schema<string, string> & Schema.Present;
19
+ }>> & {
20
+ readonly output?: Schema.RecordTypes<{
21
+ enabled: Schema<boolean, boolean> & Schema.Present;
22
+ calendar_url: Schema<string, string> & Schema.Present;
23
+ username: Schema<string, string> & Schema.Present;
24
+ password: Schema<string, string> & Schema.Present;
25
+ }> | undefined;
26
+ };
27
+ google: Schema<Schema.InputRecord<{
28
+ enabled: Schema<boolean, boolean> & Schema.Present;
29
+ client_id: Schema<string, string> & Schema.Present;
30
+ client_secret: Schema<string, string> & Schema.Present;
31
+ refresh_token: Schema<string, string> & Schema.Present;
32
+ calendar_id: Schema<string, string> & Schema.Present;
33
+ token_file: Schema<string, string> & Schema.Present;
34
+ }>, Schema.RecordTypes<{
35
+ enabled: Schema<boolean, boolean> & Schema.Present;
36
+ client_id: Schema<string, string> & Schema.Present;
37
+ client_secret: Schema<string, string> & Schema.Present;
38
+ refresh_token: Schema<string, string> & Schema.Present;
39
+ calendar_id: Schema<string, string> & Schema.Present;
40
+ token_file: Schema<string, string> & Schema.Present;
41
+ }>> & {
42
+ readonly output?: Schema.RecordTypes<{
43
+ enabled: Schema<boolean, boolean> & Schema.Present;
44
+ client_id: Schema<string, string> & Schema.Present;
45
+ client_secret: Schema<string, string> & Schema.Present;
46
+ refresh_token: Schema<string, string> & Schema.Present;
47
+ calendar_id: Schema<string, string> & Schema.Present;
48
+ token_file: Schema<string, string> & Schema.Present;
49
+ }> | undefined;
50
+ };
51
+ microsoft: Schema<Schema.InputRecord<{
52
+ enabled: Schema<boolean, boolean> & Schema.Present;
53
+ client_id: Schema<string, string> & Schema.Present;
54
+ client_secret: Schema<string, string> & Schema.Present;
55
+ refresh_token: Schema<string, string> & Schema.Present;
56
+ tenant: Schema<string, string> & Schema.Present;
57
+ calendar_id: Schema<string, string> & Schema.Present;
58
+ token_file: Schema<string, string> & Schema.Present;
59
+ }>, Schema.RecordTypes<{
60
+ enabled: Schema<boolean, boolean> & Schema.Present;
61
+ client_id: Schema<string, string> & Schema.Present;
62
+ client_secret: Schema<string, string> & Schema.Present;
63
+ refresh_token: Schema<string, string> & Schema.Present;
64
+ tenant: Schema<string, string> & Schema.Present;
65
+ calendar_id: Schema<string, string> & Schema.Present;
66
+ token_file: Schema<string, string> & Schema.Present;
67
+ }>> & {
68
+ readonly output?: Schema.RecordTypes<{
69
+ enabled: Schema<boolean, boolean> & Schema.Present;
70
+ client_id: Schema<string, string> & Schema.Present;
71
+ client_secret: Schema<string, string> & Schema.Present;
72
+ refresh_token: Schema<string, string> & Schema.Present;
73
+ tenant: Schema<string, string> & Schema.Present;
74
+ calendar_id: Schema<string, string> & Schema.Present;
75
+ token_file: Schema<string, string> & Schema.Present;
76
+ }> | undefined;
77
+ };
78
+ }>, Schema.RecordTypes<{
79
+ provider: Schema<"caldav" | "google" | "microsoft" | "none", "caldav" | "google" | "microsoft" | "none"> & Schema.Present;
80
+ timezone: Schema<string, string> & Schema.Present;
81
+ work_day_start: Schema<string, string> & Schema.Present;
82
+ work_day_end: Schema<string, string> & Schema.Present;
83
+ oauth_redirect_base_url: Schema<string, string> & Schema.Present;
84
+ oauth_callback_path: Schema<string, string> & Schema.Present;
85
+ caldav: Schema<Schema.InputRecord<{
86
+ enabled: Schema<boolean, boolean> & Schema.Present;
87
+ calendar_url: Schema<string, string> & Schema.Present;
88
+ username: Schema<string, string> & Schema.Present;
89
+ password: Schema<string, string> & Schema.Present;
90
+ }>, Schema.RecordTypes<{
91
+ enabled: Schema<boolean, boolean> & Schema.Present;
92
+ calendar_url: Schema<string, string> & Schema.Present;
93
+ username: Schema<string, string> & Schema.Present;
94
+ password: Schema<string, string> & Schema.Present;
95
+ }>> & {
96
+ readonly output?: Schema.RecordTypes<{
97
+ enabled: Schema<boolean, boolean> & Schema.Present;
98
+ calendar_url: Schema<string, string> & Schema.Present;
99
+ username: Schema<string, string> & Schema.Present;
100
+ password: Schema<string, string> & Schema.Present;
101
+ }> | undefined;
102
+ };
20
103
  google: Schema<Schema.InputRecord<{
21
104
  enabled: Schema<boolean, boolean> & Schema.Present;
22
105
  client_id: Schema<string, string> & Schema.Present;
@@ -24,14 +107,23 @@ export declare const calendarConfig: Schema<Schema.InputRecord<{
24
107
  refresh_token: Schema<string, string> & Schema.Present;
25
108
  calendar_id: Schema<string, string> & Schema.Present;
26
109
  token_file: Schema<string, string> & Schema.Present;
27
- }>, {
28
- enabled: boolean;
29
- client_id: string;
30
- client_secret: string;
31
- refresh_token: string;
32
- calendar_id: string;
33
- token_file: string;
34
- } & {}>;
110
+ }>, Schema.RecordTypes<{
111
+ enabled: Schema<boolean, boolean> & Schema.Present;
112
+ client_id: Schema<string, string> & Schema.Present;
113
+ client_secret: Schema<string, string> & Schema.Present;
114
+ refresh_token: Schema<string, string> & Schema.Present;
115
+ calendar_id: Schema<string, string> & Schema.Present;
116
+ token_file: Schema<string, string> & Schema.Present;
117
+ }>> & {
118
+ readonly output?: Schema.RecordTypes<{
119
+ enabled: Schema<boolean, boolean> & Schema.Present;
120
+ client_id: Schema<string, string> & Schema.Present;
121
+ client_secret: Schema<string, string> & Schema.Present;
122
+ refresh_token: Schema<string, string> & Schema.Present;
123
+ calendar_id: Schema<string, string> & Schema.Present;
124
+ token_file: Schema<string, string> & Schema.Present;
125
+ }> | undefined;
126
+ };
35
127
  microsoft: Schema<Schema.InputRecord<{
36
128
  enabled: Schema<boolean, boolean> & Schema.Present;
37
129
  client_id: Schema<string, string> & Schema.Present;
@@ -40,47 +132,104 @@ export declare const calendarConfig: Schema<Schema.InputRecord<{
40
132
  tenant: Schema<string, string> & Schema.Present;
41
133
  calendar_id: Schema<string, string> & Schema.Present;
42
134
  token_file: Schema<string, string> & Schema.Present;
43
- }>, {
44
- enabled: boolean;
45
- client_id: string;
46
- client_secret: string;
47
- refresh_token: string;
48
- tenant: string;
49
- calendar_id: string;
50
- token_file: string;
51
- } & {}>;
52
- }>, {
53
- provider: "caldav" | "google" | "microsoft" | "none";
54
- timezone: string;
55
- work_day_start: string;
56
- work_day_end: string;
57
- oauth_redirect_base_url: string;
58
- oauth_callback_path: string;
59
- } & {
60
- caldav?: ({
61
- enabled: boolean;
62
- calendar_url: string;
63
- username: string;
64
- password: string;
65
- } & {}) | undefined;
66
- google?: ({
67
- enabled: boolean;
68
- client_id: string;
69
- client_secret: string;
70
- refresh_token: string;
71
- calendar_id: string;
72
- token_file: string;
73
- } & {}) | undefined;
74
- microsoft?: ({
75
- enabled: boolean;
76
- client_id: string;
77
- client_secret: string;
78
- refresh_token: string;
79
- tenant: string;
80
- calendar_id: string;
81
- token_file: string;
82
- } & {}) | undefined;
83
- }>;
135
+ }>, Schema.RecordTypes<{
136
+ enabled: Schema<boolean, boolean> & Schema.Present;
137
+ client_id: Schema<string, string> & Schema.Present;
138
+ client_secret: Schema<string, string> & Schema.Present;
139
+ refresh_token: Schema<string, string> & Schema.Present;
140
+ tenant: Schema<string, string> & Schema.Present;
141
+ calendar_id: Schema<string, string> & Schema.Present;
142
+ token_file: Schema<string, string> & Schema.Present;
143
+ }>> & {
144
+ readonly output?: Schema.RecordTypes<{
145
+ enabled: Schema<boolean, boolean> & Schema.Present;
146
+ client_id: Schema<string, string> & Schema.Present;
147
+ client_secret: Schema<string, string> & Schema.Present;
148
+ refresh_token: Schema<string, string> & Schema.Present;
149
+ tenant: Schema<string, string> & Schema.Present;
150
+ calendar_id: Schema<string, string> & Schema.Present;
151
+ token_file: Schema<string, string> & Schema.Present;
152
+ }> | undefined;
153
+ };
154
+ }>> & {
155
+ readonly output?: Schema.RecordTypes<{
156
+ provider: Schema<"caldav" | "google" | "microsoft" | "none", "caldav" | "google" | "microsoft" | "none"> & Schema.Present;
157
+ timezone: Schema<string, string> & Schema.Present;
158
+ work_day_start: Schema<string, string> & Schema.Present;
159
+ work_day_end: Schema<string, string> & Schema.Present;
160
+ oauth_redirect_base_url: Schema<string, string> & Schema.Present;
161
+ oauth_callback_path: Schema<string, string> & Schema.Present;
162
+ caldav: Schema<Schema.InputRecord<{
163
+ enabled: Schema<boolean, boolean> & Schema.Present;
164
+ calendar_url: Schema<string, string> & Schema.Present;
165
+ username: Schema<string, string> & Schema.Present;
166
+ password: Schema<string, string> & Schema.Present;
167
+ }>, Schema.RecordTypes<{
168
+ enabled: Schema<boolean, boolean> & Schema.Present;
169
+ calendar_url: Schema<string, string> & Schema.Present;
170
+ username: Schema<string, string> & Schema.Present;
171
+ password: Schema<string, string> & Schema.Present;
172
+ }>> & {
173
+ readonly output?: Schema.RecordTypes<{
174
+ enabled: Schema<boolean, boolean> & Schema.Present;
175
+ calendar_url: Schema<string, string> & Schema.Present;
176
+ username: Schema<string, string> & Schema.Present;
177
+ password: Schema<string, string> & Schema.Present;
178
+ }> | undefined;
179
+ };
180
+ google: Schema<Schema.InputRecord<{
181
+ enabled: Schema<boolean, boolean> & Schema.Present;
182
+ client_id: Schema<string, string> & Schema.Present;
183
+ client_secret: Schema<string, string> & Schema.Present;
184
+ refresh_token: Schema<string, string> & Schema.Present;
185
+ calendar_id: Schema<string, string> & Schema.Present;
186
+ token_file: Schema<string, string> & Schema.Present;
187
+ }>, Schema.RecordTypes<{
188
+ enabled: Schema<boolean, boolean> & Schema.Present;
189
+ client_id: Schema<string, string> & Schema.Present;
190
+ client_secret: Schema<string, string> & Schema.Present;
191
+ refresh_token: Schema<string, string> & Schema.Present;
192
+ calendar_id: Schema<string, string> & Schema.Present;
193
+ token_file: Schema<string, string> & Schema.Present;
194
+ }>> & {
195
+ readonly output?: Schema.RecordTypes<{
196
+ enabled: Schema<boolean, boolean> & Schema.Present;
197
+ client_id: Schema<string, string> & Schema.Present;
198
+ client_secret: Schema<string, string> & Schema.Present;
199
+ refresh_token: Schema<string, string> & Schema.Present;
200
+ calendar_id: Schema<string, string> & Schema.Present;
201
+ token_file: Schema<string, string> & Schema.Present;
202
+ }> | undefined;
203
+ };
204
+ microsoft: Schema<Schema.InputRecord<{
205
+ enabled: Schema<boolean, boolean> & Schema.Present;
206
+ client_id: Schema<string, string> & Schema.Present;
207
+ client_secret: Schema<string, string> & Schema.Present;
208
+ refresh_token: Schema<string, string> & Schema.Present;
209
+ tenant: Schema<string, string> & Schema.Present;
210
+ calendar_id: Schema<string, string> & Schema.Present;
211
+ token_file: Schema<string, string> & Schema.Present;
212
+ }>, Schema.RecordTypes<{
213
+ enabled: Schema<boolean, boolean> & Schema.Present;
214
+ client_id: Schema<string, string> & Schema.Present;
215
+ client_secret: Schema<string, string> & Schema.Present;
216
+ refresh_token: Schema<string, string> & Schema.Present;
217
+ tenant: Schema<string, string> & Schema.Present;
218
+ calendar_id: Schema<string, string> & Schema.Present;
219
+ token_file: Schema<string, string> & Schema.Present;
220
+ }>> & {
221
+ readonly output?: Schema.RecordTypes<{
222
+ enabled: Schema<boolean, boolean> & Schema.Present;
223
+ client_id: Schema<string, string> & Schema.Present;
224
+ client_secret: Schema<string, string> & Schema.Present;
225
+ refresh_token: Schema<string, string> & Schema.Present;
226
+ tenant: Schema<string, string> & Schema.Present;
227
+ calendar_id: Schema<string, string> & Schema.Present;
228
+ token_file: Schema<string, string> & Schema.Present;
229
+ }> | undefined;
230
+ };
231
+ }> | undefined;
232
+ };
84
233
  export type CalendarConfig = Schema.Output<typeof calendarConfig>;
85
234
  export declare function assertCalendarTimezone(timezone: string): void;
86
235
  export { cleanSecret } from "./secrets.js";
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2FzB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC;AAElE,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQ7D;AAED,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2FzB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC;AAElE,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQ7D;AAED,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type PluginConsoleRpc } from 'zhin.js';
2
+ import { type CalendarRuntime } from './runtime.js';
3
+ export declare function createCalendarConsoleRpc(defaultRuntime?: CalendarRuntime): PluginConsoleRpc;
4
+ //# sourceMappingURL=console.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../src/console.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,gBAAgB,EAItB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAmB1E,wBAAgB,wBAAwB,CAAC,cAAc,CAAC,EAAE,eAAe,GAAG,gBAAgB,CA0B3F"}
package/lib/console.js ADDED
@@ -0,0 +1,36 @@
1
+ import { definePluginConsoleRpc, PluginConsoleRpcError, } from 'zhin.js';
2
+ import { DEFAULT_OAUTH_CALLBACK_PATH } from './chat-auth.js';
3
+ import { calendarRuntimeToken } from './runtime.js';
4
+ function resolveCalendarRuntime(call, fallback) {
5
+ const runtime = call.runtime?.use?.(calendarRuntimeToken) ?? fallback;
6
+ if (!runtime) {
7
+ throw new PluginConsoleRpcError('unavailable', 'Calendar runtime is not initialized');
8
+ }
9
+ return runtime;
10
+ }
11
+ export function createCalendarConsoleRpc(defaultRuntime) {
12
+ return definePluginConsoleRpc({
13
+ status: {
14
+ page: 'index',
15
+ requiredPermissions: ['calendar:read'],
16
+ handler(_input, call) {
17
+ const runtime = resolveCalendarRuntime(call, defaultRuntime);
18
+ const cfg = runtime.config;
19
+ const start = cfg.workday_start_hour !== undefined
20
+ ? `${cfg.workday_start_hour}:00`
21
+ : cfg.work_day_start?.trim() || '09:00';
22
+ const end = cfg.workday_end_hour !== undefined
23
+ ? `${cfg.workday_end_hour}:00`
24
+ : cfg.work_day_end?.trim() || '18:00';
25
+ return {
26
+ provider: cfg.provider,
27
+ timezone: cfg.timezone,
28
+ ready: Boolean(runtime.provider),
29
+ oauthCallbackPath: cfg.oauth_callback_path?.trim() || DEFAULT_OAUTH_CALLBACK_PATH,
30
+ workingHours: `${start} - ${end}`,
31
+ };
32
+ },
33
+ },
34
+ });
35
+ }
36
+ //# sourceMappingURL=console.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../src/console.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,GAKtB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAwB,MAAM,cAAc,CAAC;AAW1E,SAAS,sBAAsB,CAAC,IAA0B,EAAE,QAA0B;IACpF,MAAM,OAAO,GAAI,IAAI,CAAC,OAA6C,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,IAAI,QAAQ,CAAC;IAC7G,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,qBAAqB,CAAC,aAAa,EAAE,qCAAqC,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,cAAgC;IACvE,OAAO,sBAAsB,CAAC;QAC5B,MAAM,EAAE;YACN,IAAI,EAAE,OAAO;YACb,mBAAmB,EAAE,CAAC,eAAe,CAAC;YACtC,OAAO,CAAC,MAA6B,EAAE,IAA0B;gBAC/D,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;gBAC7D,MAAM,GAAG,GAAG,OAAO,CAAC,MAAgC,CAAC;gBACrD,MAAM,KAAK,GACT,GAAG,CAAC,kBAAkB,KAAK,SAAS;oBAClC,CAAC,CAAC,GAAG,GAAG,CAAC,kBAAkB,KAAK;oBAChC,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC;gBAC5C,MAAM,GAAG,GACP,GAAG,CAAC,gBAAgB,KAAK,SAAS;oBAChC,CAAC,CAAC,GAAG,GAAG,CAAC,gBAAgB,KAAK;oBAC9B,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC;gBAC1C,OAAO;oBACL,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;oBAChC,iBAAiB,EAAE,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,2BAA2B;oBACjF,YAAY,EAAE,GAAG,KAAK,MAAM,GAAG,EAAE;iBAClC,CAAC;YACJ,CAAC;SACF;KACF,CAAC,CAAC;AACL,CAAC"}
package/lib/index.d.ts CHANGED
@@ -8,6 +8,7 @@ export { parseCalDavEvents } from "./caldav.js";
8
8
  export { calendarConfig, assertCalendarTimezone, type CalendarConfig, } from "./config.js";
9
9
  export { cleanSecret } from "./secrets.js";
10
10
  export { calendarRuntimeToken, type CalendarRuntime } from "./runtime.js";
11
+ export { createCalendarConsoleRpc } from "./console.js";
11
12
  export { OAuthTokenManager, OAuthTokenError, authCommandFor, type OAuthProviderKind, type RefreshTokenStore, type TokenManagerOptions, type TokenSet, } from "./token-manager.js";
12
13
  export { CalendarCredentialStore, type CalendarStateStore, type CredentialOwner, type StoredCredential, } from "./credential-store.js";
13
14
  export { CalendarAuthService, DEFAULT_OAUTH_CALLBACK_PATH, buildRedirectUri, localOriginFromAddress, parseOAuthProvider, } from "./chat-auth.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAOlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EACL,iBAAiB,EACjB,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,QAAQ,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,uBAAuB,EACvB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,WAAW,4BAA4B;IAC3C,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,uBAAuB,CAAC;IAC/C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,yBAAyB,CAAC;CAC1D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,cAAc,EACtB,YAAY,GAAE,wBAA6B,GAC1C,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAiCvD;AAED,2EAA2E;AAC3E,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,cAAc,EACtB,YAAY,GAAE,4BAAiC,GAC9C,gBAAgB,GAAG,SAAS,CAyE9B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAOlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EACL,iBAAiB,EACjB,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,KAAK,cAAc,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,QAAQ,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,uBAAuB,EACvB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,WAAW,4BAA4B;IAC3C,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,uBAAuB,CAAC;IAC/C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,yBAAyB,CAAC;CAC1D;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,cAAc,EACtB,YAAY,GAAE,wBAA6B,GAC1C,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAiCvD;AAED,2EAA2E;AAC3E,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,cAAc,EACtB,YAAY,GAAE,4BAAiC,GAC9C,gBAAgB,GAAG,SAAS,CAyE9B"}
package/lib/index.js CHANGED
@@ -7,6 +7,7 @@ export { parseCalDavEvents } from "./caldav.js";
7
7
  export { calendarConfig, assertCalendarTimezone, } from "./config.js";
8
8
  export { cleanSecret } from "./secrets.js";
9
9
  export { calendarRuntimeToken } from "./runtime.js";
10
+ export { createCalendarConsoleRpc } from "./console.js";
10
11
  export { OAuthTokenManager, OAuthTokenError, authCommandFor, } from "./token-manager.js";
11
12
  export { CalendarCredentialStore, } from "./credential-store.js";
12
13
  export { CalendarAuthService, DEFAULT_OAUTH_CALLBACK_PATH, buildRedirectUri, localOriginFromAddress, parseOAuthProvider, } from "./chat-auth.js";
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhin.js/plugin-calendar",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "description": "CalDAV / Google / Microsoft calendar tools for Zhin Agent",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -18,6 +18,7 @@
18
18
  "files": [
19
19
  "plugin.js",
20
20
  "commands",
21
+ "pages",
21
22
  "src",
22
23
  "lib",
23
24
  "skills",
@@ -39,22 +40,28 @@
39
40
  "url": "https://github.com/lc-cn"
40
41
  },
41
42
  "dependencies": {
42
- "@zhin.js/host-http": "1.1.13",
43
- "@zhin.js/im-contract": "1.1.10",
44
- "@zhin.js/skill": "1.1.12",
45
- "@zhin.js/tool": "1.1.14"
43
+ "@zhin.js/client": "1.1.25",
44
+ "@zhin.js/console-contract": "1.1.3",
45
+ "@zhin.js/host-http": "1.1.15",
46
+ "@zhin.js/im-contract": "1.1.12",
47
+ "@zhin.js/page": "1.1.15",
48
+ "@zhin.js/skill": "1.1.14",
49
+ "@zhin.js/tool": "1.1.16"
46
50
  },
47
51
  "devDependencies": {
48
52
  "typescript": "^6.0.3",
49
53
  "vitest": "^4.1.10",
50
54
  "zod": "^4.4.3",
51
- "@zhin.js/command": "1.1.13",
52
- "zhin.js": "1.1.20"
55
+ "@zhin.js/command": "1.1.15",
56
+ "zhin.js": "1.1.22"
53
57
  },
54
58
  "peerDependencies": {
55
59
  "zod": "^4.0.0",
56
- "@zhin.js/command": "^1.1.13",
57
- "zhin.js": "^1.1.20"
60
+ "@zhin.js/command": "^1.1.15",
61
+ "@zhin.js/page": "^1.1.15",
62
+ "@zhin.js/skill": "^1.1.14",
63
+ "@zhin.js/tool": "^1.1.16",
64
+ "zhin.js": "^1.1.22"
58
65
  },
59
66
  "peerDependenciesMeta": {
60
67
  "@zhin.js/command": {
@@ -94,6 +101,10 @@
94
101
  {
95
102
  "package": "@zhin.js/skill",
96
103
  "api": "^1.0.0"
104
+ },
105
+ {
106
+ "package": "@zhin.js/page",
107
+ "api": "^1.0.0"
97
108
  }
98
109
  ],
99
110
  "plugins": []
@@ -0,0 +1,58 @@
1
+ // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
+ import { definePage } from '@zhin.js/console-contract';
3
+ import { createDeclarativePage } from '@zhin.js/client';
4
+ export const meta = definePage({
5
+ title: '日历日程',
6
+ titleI18n: { en: 'Calendar' },
7
+ icon: 'Calendar',
8
+ order: 53,
9
+ requiredPermissions: ['calendar:read'],
10
+ });
11
+ export default createDeclarativePage({
12
+ title: { zh: '日历日程', en: 'Calendar' },
13
+ description: {
14
+ zh: '查看日历后端连接状态、时区与工作时间范围',
15
+ en: 'View calendar provider status, timezone, and working hours configuration',
16
+ },
17
+ dictionary: {
18
+ '已就绪': 'Ready',
19
+ '未就绪': 'Not ready',
20
+ },
21
+ badges: [
22
+ {
23
+ key: 'ready',
24
+ label: (data, ctx) => (data.ready ? ctx.t('已就绪') : ctx.t('未就绪')),
25
+ tone: (data) => (data.ready ? 'success' : 'warning'),
26
+ },
27
+ ],
28
+ stats: [
29
+ {
30
+ key: 'provider',
31
+ label: { zh: '日历后端', en: 'Provider' },
32
+ value: 'provider',
33
+ },
34
+ {
35
+ key: 'timezone',
36
+ label: { zh: '时区', en: 'Timezone' },
37
+ value: 'timezone',
38
+ },
39
+ {
40
+ key: 'workingHours',
41
+ label: { zh: '工作时段', en: 'Working Hours' },
42
+ value: 'workingHours',
43
+ },
44
+ ],
45
+ sections: [
46
+ {
47
+ id: 'overview',
48
+ title: { zh: '配置概览', en: 'Configuration Overview' },
49
+ entries: (data) => ({
50
+ provider: data.provider,
51
+ timezone: data.timezone,
52
+ ready: data.ready ? 'true' : 'false',
53
+ oauthCallbackPath: data.oauthCallbackPath,
54
+ workingHours: data.workingHours,
55
+ }),
56
+ },
57
+ ],
58
+ });
@@ -0,0 +1,67 @@
1
+ import { definePage } from '@zhin.js/console-contract';
2
+ import { createDeclarativePage } from '@zhin.js/client';
3
+
4
+ export interface CalendarConsoleStatus {
5
+ readonly provider: 'none' | 'google' | 'microsoft' | 'caldav' | 'ics';
6
+ readonly timezone: string;
7
+ readonly ready: boolean;
8
+ readonly oauthCallbackPath: string;
9
+ readonly workingHours: string;
10
+ }
11
+
12
+ export const meta = definePage({
13
+ title: '日历日程',
14
+ titleI18n: { en: 'Calendar' },
15
+ icon: 'Calendar',
16
+ order: 53,
17
+ requiredPermissions: ['calendar:read'],
18
+ });
19
+
20
+ export default createDeclarativePage<CalendarConsoleStatus>({
21
+ title: { zh: '日历日程', en: 'Calendar' },
22
+ description: {
23
+ zh: '查看日历后端连接状态、时区与工作时间范围',
24
+ en: 'View calendar provider status, timezone, and working hours configuration',
25
+ },
26
+ dictionary: {
27
+ '已就绪': 'Ready',
28
+ '未就绪': 'Not ready',
29
+ },
30
+ badges: [
31
+ {
32
+ key: 'ready',
33
+ label: (data, ctx) => (data.ready ? ctx.t('已就绪') : ctx.t('未就绪')),
34
+ tone: (data) => (data.ready ? 'success' : 'warning'),
35
+ },
36
+ ],
37
+ stats: [
38
+ {
39
+ key: 'provider',
40
+ label: { zh: '日历后端', en: 'Provider' },
41
+ value: 'provider',
42
+ },
43
+ {
44
+ key: 'timezone',
45
+ label: { zh: '时区', en: 'Timezone' },
46
+ value: 'timezone',
47
+ },
48
+ {
49
+ key: 'workingHours',
50
+ label: { zh: '工作时段', en: 'Working Hours' },
51
+ value: 'workingHours',
52
+ },
53
+ ],
54
+ sections: [
55
+ {
56
+ id: 'overview',
57
+ title: { zh: '配置概览', en: 'Configuration Overview' },
58
+ entries: (data) => ({
59
+ provider: data.provider,
60
+ timezone: data.timezone,
61
+ ready: data.ready ? 'true' : 'false',
62
+ oauthCallbackPath: data.oauthCallbackPath,
63
+ workingHours: data.workingHours,
64
+ }),
65
+ },
66
+ ],
67
+ });
package/plugin.js CHANGED
@@ -1,8 +1,8 @@
1
1
  // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
2
  import { projectLocaleToken } from 'zhin.js/i18n';
3
- import { databaseHostToken, definePlugin, outboundHostToken, } from "zhin.js";
3
+ import { databaseHostToken, definePlugin, outboundHostToken, pluginConsoleRpcToken, } from "zhin.js";
4
4
  import { httpHostToken } from "@zhin.js/host-http";
5
- import { assertCalendarTimezone, createCalendarProvider, createOAuthTokenManagers, } from "./lib/index.js";
5
+ import { assertCalendarTimezone, createCalendarConsoleRpc, createCalendarProvider, createOAuthTokenManagers, } from "./lib/index.js";
6
6
  import { buildRedirectUri, CalendarAuthService, DEFAULT_OAUTH_CALLBACK_PATH, localOriginFromAddress, } from "./lib/chat-auth.js";
7
7
  import { CalendarCredentialStore, } from "./lib/credential-store.js";
8
8
  import { registerOAuthCallbackRoute } from "./lib/http-callback.js";
@@ -54,11 +54,13 @@ export default definePlugin({
54
54
  resolveRedirectUri,
55
55
  });
56
56
  const provider = createCalendarProvider(config, { managers });
57
- context.resources.provide(calendarRuntimeToken, {
57
+ const runtime = {
58
58
  config,
59
59
  provider,
60
60
  auth: auth,
61
- });
61
+ };
62
+ context.resources.provide(calendarRuntimeToken, runtime);
63
+ context.resources.provide(pluginConsoleRpcToken, createCalendarConsoleRpc(runtime));
62
64
  if (config.provider !== "none" && !provider) {
63
65
  console.warn("[calendar] provider 已配置但凭据为空,日历工具将不可用;Google/Microsoft 请先配置 client_id,再在聊天中发送 calendar auth <provider>");
64
66
  }
package/src/console.ts ADDED
@@ -0,0 +1,56 @@
1
+ import {
2
+ definePluginConsoleRpc,
3
+ PluginConsoleRpcError,
4
+ type PluginConsoleRpc,
5
+ type PluginConsoleRpcCall,
6
+ type PluginConsoleRpcInput,
7
+ type PluginConsoleRpcJson,
8
+ } from 'zhin.js';
9
+ import { DEFAULT_OAUTH_CALLBACK_PATH } from './chat-auth.js';
10
+ import type { CalendarConfig } from './config.js';
11
+ import { calendarRuntimeToken, type CalendarRuntime } from './runtime.js';
12
+
13
+ type CalendarRuntimeLookup = {
14
+ readonly use?: (token: typeof calendarRuntimeToken) => CalendarRuntime | undefined;
15
+ };
16
+
17
+ type ExtendedCalendarConfig = CalendarConfig & {
18
+ readonly workday_start_hour?: number;
19
+ readonly workday_end_hour?: number;
20
+ };
21
+
22
+ function resolveCalendarRuntime(call: PluginConsoleRpcCall, fallback?: CalendarRuntime): CalendarRuntime {
23
+ const runtime = (call.runtime as CalendarRuntimeLookup | undefined)?.use?.(calendarRuntimeToken) ?? fallback;
24
+ if (!runtime) {
25
+ throw new PluginConsoleRpcError('unavailable', 'Calendar runtime is not initialized');
26
+ }
27
+ return runtime;
28
+ }
29
+
30
+ export function createCalendarConsoleRpc(defaultRuntime?: CalendarRuntime): PluginConsoleRpc {
31
+ return definePluginConsoleRpc({
32
+ status: {
33
+ page: 'index',
34
+ requiredPermissions: ['calendar:read'],
35
+ handler(_input: PluginConsoleRpcInput, call: PluginConsoleRpcCall): PluginConsoleRpcJson {
36
+ const runtime = resolveCalendarRuntime(call, defaultRuntime);
37
+ const cfg = runtime.config as ExtendedCalendarConfig;
38
+ const start =
39
+ cfg.workday_start_hour !== undefined
40
+ ? `${cfg.workday_start_hour}:00`
41
+ : cfg.work_day_start?.trim() || '09:00';
42
+ const end =
43
+ cfg.workday_end_hour !== undefined
44
+ ? `${cfg.workday_end_hour}:00`
45
+ : cfg.work_day_end?.trim() || '18:00';
46
+ return {
47
+ provider: cfg.provider,
48
+ timezone: cfg.timezone,
49
+ ready: Boolean(runtime.provider),
50
+ oauthCallbackPath: cfg.oauth_callback_path?.trim() || DEFAULT_OAUTH_CALLBACK_PATH,
51
+ workingHours: `${start} - ${end}`,
52
+ };
53
+ },
54
+ },
55
+ });
56
+ }
package/src/index.ts CHANGED
@@ -28,6 +28,7 @@ export {
28
28
  } from "./config.js";
29
29
  export { cleanSecret } from "./secrets.js";
30
30
  export { calendarRuntimeToken, type CalendarRuntime } from "./runtime.js";
31
+ export { createCalendarConsoleRpc } from "./console.js";
31
32
  export {
32
33
  OAuthTokenManager,
33
34
  OAuthTokenError,