@shin1ohno/sage 0.8.8 → 0.9.3
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/README.md +31 -0
- package/dist/cli/http-server-with-config.d.ts +2 -0
- package/dist/cli/http-server-with-config.d.ts.map +1 -1
- package/dist/cli/http-server-with-config.js +71 -0
- package/dist/cli/http-server-with-config.js.map +1 -1
- package/dist/cli/main-entry.d.ts.map +1 -1
- package/dist/cli/main-entry.js +1 -0
- package/dist/cli/main-entry.js.map +1 -1
- package/dist/cli/parser.d.ts +2 -0
- package/dist/cli/parser.d.ts.map +1 -1
- package/dist/cli/parser.js +7 -0
- package/dist/cli/parser.js.map +1 -1
- package/dist/config/validation.d.ts +721 -0
- package/dist/config/validation.d.ts.map +1 -1
- package/dist/config/validation.js +203 -0
- package/dist/config/validation.js.map +1 -1
- package/dist/index.js +11 -10
- package/dist/index.js.map +1 -1
- package/dist/integrations/apple-reminders.d.ts.map +1 -1
- package/dist/integrations/apple-reminders.js +6 -5
- package/dist/integrations/apple-reminders.js.map +1 -1
- package/dist/integrations/calendar-event-creator.d.ts.map +1 -1
- package/dist/integrations/calendar-event-creator.js +2 -1
- package/dist/integrations/calendar-event-creator.js.map +1 -1
- package/dist/integrations/calendar-event-deleter.d.ts.map +1 -1
- package/dist/integrations/calendar-event-deleter.js +2 -1
- package/dist/integrations/calendar-event-deleter.js.map +1 -1
- package/dist/integrations/calendar-event-response.d.ts.map +1 -1
- package/dist/integrations/calendar-event-response.js +4 -3
- package/dist/integrations/calendar-event-response.js.map +1 -1
- package/dist/integrations/calendar-service.d.ts +14 -0
- package/dist/integrations/calendar-service.d.ts.map +1 -1
- package/dist/integrations/calendar-service.js +6 -5
- package/dist/integrations/calendar-service.js.map +1 -1
- package/dist/integrations/calendar-source-manager.d.ts +86 -3
- package/dist/integrations/calendar-source-manager.d.ts.map +1 -1
- package/dist/integrations/calendar-source-manager.js +152 -20
- package/dist/integrations/calendar-source-manager.js.map +1 -1
- package/dist/integrations/google-calendar-service.d.ts +55 -3
- package/dist/integrations/google-calendar-service.d.ts.map +1 -1
- package/dist/integrations/google-calendar-service.js +215 -5
- package/dist/integrations/google-calendar-service.js.map +1 -1
- package/dist/integrations/notion-mcp.d.ts.map +1 -1
- package/dist/integrations/notion-mcp.js +5 -4
- package/dist/integrations/notion-mcp.js.map +1 -1
- package/dist/integrations/todo-list-manager.d.ts.map +1 -1
- package/dist/integrations/todo-list-manager.js +3 -2
- package/dist/integrations/todo-list-manager.js.map +1 -1
- package/dist/oauth/encryption-service.d.ts +104 -0
- package/dist/oauth/encryption-service.d.ts.map +1 -0
- package/dist/oauth/encryption-service.js +271 -0
- package/dist/oauth/encryption-service.js.map +1 -0
- package/dist/oauth/file-mutex.d.ts +68 -0
- package/dist/oauth/file-mutex.d.ts.map +1 -0
- package/dist/oauth/file-mutex.js +141 -0
- package/dist/oauth/file-mutex.js.map +1 -0
- package/dist/oauth/google-oauth-handler.d.ts +8 -9
- package/dist/oauth/google-oauth-handler.d.ts.map +1 -1
- package/dist/oauth/google-oauth-handler.js +30 -65
- package/dist/oauth/google-oauth-handler.js.map +1 -1
- package/dist/oauth/index.d.ts +1 -0
- package/dist/oauth/index.d.ts.map +1 -1
- package/dist/oauth/index.js +2 -0
- package/dist/oauth/index.js.map +1 -1
- package/dist/oauth/oauth-server.d.ts +61 -1
- package/dist/oauth/oauth-server.d.ts.map +1 -1
- package/dist/oauth/oauth-server.js +177 -40
- package/dist/oauth/oauth-server.js.map +1 -1
- package/dist/oauth/persistent-client-store.d.ts +58 -0
- package/dist/oauth/persistent-client-store.d.ts.map +1 -0
- package/dist/oauth/persistent-client-store.js +188 -0
- package/dist/oauth/persistent-client-store.js.map +1 -0
- package/dist/oauth/persistent-refresh-token-store.d.ts +77 -0
- package/dist/oauth/persistent-refresh-token-store.d.ts.map +1 -0
- package/dist/oauth/persistent-refresh-token-store.js +226 -0
- package/dist/oauth/persistent-refresh-token-store.js.map +1 -0
- package/dist/oauth/persistent-session-store.d.ts +69 -0
- package/dist/oauth/persistent-session-store.d.ts.map +1 -0
- package/dist/oauth/persistent-session-store.js +155 -0
- package/dist/oauth/persistent-session-store.js.map +1 -0
- package/dist/oauth/session-store.d.ts +31 -0
- package/dist/oauth/session-store.d.ts.map +1 -0
- package/dist/oauth/session-store.js +47 -0
- package/dist/oauth/session-store.js.map +1 -0
- package/dist/remote/cloud-config.d.ts.map +1 -1
- package/dist/remote/cloud-config.js +2 -1
- package/dist/remote/cloud-config.js.map +1 -1
- package/dist/services/container.d.ts.map +1 -1
- package/dist/services/container.js +3 -2
- package/dist/services/container.js.map +1 -1
- package/dist/services/working-cadence.d.ts +37 -1
- package/dist/services/working-cadence.d.ts.map +1 -1
- package/dist/services/working-cadence.js +152 -13
- package/dist/services/working-cadence.js.map +1 -1
- package/dist/tools/calendar/handlers.d.ts +82 -3
- package/dist/tools/calendar/handlers.d.ts.map +1 -1
- package/dist/tools/calendar/handlers.js +200 -16
- package/dist/tools/calendar/handlers.js.map +1 -1
- package/dist/types/google-calendar-types.d.ts +150 -3
- package/dist/types/google-calendar-types.d.ts.map +1 -1
- package/dist/types/google-calendar-types.js +79 -2
- package/dist/types/google-calendar-types.js.map +1 -1
- package/dist/types/task.d.ts +14 -0
- package/dist/types/task.d.ts.map +1 -1
- package/dist/utils/logger.d.ts +28 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +61 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/version.js +1 -1
- package/package.json +4 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-config.js","sourceRoot":"","sources":["../../src/remote/cloud-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"cloud-config.js","sourceRoot":"","sources":["../../src/remote/cloud-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACnF,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA6D5C;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IACrB,OAAO,CAAqB;IAC5B,cAAc,GAAW,CAAC,CAAC;IAC3B,iBAAiB,GAAY,KAAK,CAAC;IACnC,YAAY,GAAW,CAAC,CAAC;IACzB,QAAQ,CAAS;IACjB,WAAW,GAAmC,IAAI,CAAC;IACnD,YAAY,GAAiB,EAAE,CAAC;IAExC,YAAY,OAA2B;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,MAA+B;QAC3C,MAAM,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAEvD,MAAM,MAAM,GAAG,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAExC,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1D,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEpC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAEpC,OAAO;YACL,IAAI,EAAE,SAAS,GAAG,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAClD,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACzB,OAAO,EAAE,IAAI,CAAC,cAAc,GAAG,CAAC;YAChC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,SAA0B;QACtC,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAErD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1D,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAE7B,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjE,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,QAAgB;QAChC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,MAA+B;QAC7C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,KAAsB,EAAE,MAAuB;QAC5D,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;YACrC,OAAO;gBACL,WAAW,EAAE,KAAK;gBAClB,YAAY,EAAE,KAAK,CAAC,OAAO;gBAC3B,aAAa,EAAE,MAAM,CAAC,OAAO;aAC9B,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC;QACrD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;QAEzE,OAAO;YACL,WAAW;YACX,YAAY;YACZ,YAAY,EAAE,KAAK,CAAC,OAAO;YAC3B,aAAa,EAAE,MAAM,CAAC,OAAO;SAC9B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO;YACL,SAAS,EAAE,MAAM;YACjB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,kDAAkD;QAClD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,YAAY,CACV,KAA8B,EAC9B,MAA+B;QAE/B,yDAAyD;QACzD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACK,SAAS,CACf,MAA+B,EAC/B,MAA+B;QAE/B,MAAM,MAAM,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;QAEtD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,IACE,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI;gBACpB,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ;gBAC/B,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC3B,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI;gBACpB,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ;gBAC/B,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAC3B,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAC1B,MAAM,CAAC,GAAG,CAA4B,EACtC,MAAM,CAAC,GAAG,CAA4B,CACvC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,eAAe,CACb,KAA6C,EAC7C,MAA8C,EAC9C,QAA+D;QAE/D,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,YAAY;gBACf,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YAC7B,KAAK,aAAa;gBAChB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YAC9B,KAAK,YAAY;gBACf,IAAI,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;oBACzE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;gBAC7B,CAAC;gBACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YAC9B,KAAK,OAAO;gBACV,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YAC9B;gBACE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC;YACH,sEAAsE;YACtE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAErC,+DAA+D;YAC/D,0DAA0D;YAC1D,2CAA2C;YAC3C,oBAAoB;YACpB,qCAAqC;YACrC,MAAM;YAEN,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC/B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAE/B,OAAO;gBACL,SAAS,EAAE,MAAM;gBACjB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,iBAAiB,EAAE,KAAK;aACzB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,SAAS,EAAE,OAAO;gBAClB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,iBAAiB,EAAE,IAAI;gBACvB,KAAK,EAAG,KAAe,CAAC,OAAO;aAChC,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC;YACH,gEAAgE;YAChE,2DAA2D;YAC3D,2CAA2C;YAC3C,wCAAwC;YAExC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,2BAA2B,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/services/container.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/services/container.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,cAAc,GAAG,OAAO,GAAG,OAAO,CAAC;AAEjF;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,WAAW,EAAE,MAAM,CAAC,GACnB,MAAM,CAAC,GAAG,IAAI,CAgBhB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EACvC,WAAW,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,CAAC,GACrC,CAAC,MAAM,EAAE,UAAU,KAAK,CAAC,GAAG,IAAI,CAiBlC;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAE3D"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Manages service lifecycle and provides type-safe access to services.
|
|
5
5
|
* Services are lazily initialized on first access after config is loaded.
|
|
6
6
|
*/
|
|
7
|
+
import { servicesLogger } from '../utils/logger.js';
|
|
7
8
|
/**
|
|
8
9
|
* Creates a service getter that lazily initializes the service
|
|
9
10
|
*
|
|
@@ -25,7 +26,7 @@ export function createLazyService(initializer) {
|
|
|
25
26
|
initialized = true;
|
|
26
27
|
}
|
|
27
28
|
catch (error) {
|
|
28
|
-
|
|
29
|
+
servicesLogger.error({ err: error }, 'Failed to initialize service');
|
|
29
30
|
return null;
|
|
30
31
|
}
|
|
31
32
|
}
|
|
@@ -56,7 +57,7 @@ export function createConfiguredService(initializer) {
|
|
|
56
57
|
initializedWithConfig = config;
|
|
57
58
|
}
|
|
58
59
|
catch (error) {
|
|
59
|
-
|
|
60
|
+
servicesLogger.error({ err: error }, 'Failed to initialize configured service');
|
|
60
61
|
return null;
|
|
61
62
|
}
|
|
62
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/services/container.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/services/container.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAkBpD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAC/B,WAAoB;IAEpB,IAAI,QAAQ,GAAa,IAAI,CAAC;IAC9B,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,OAAO,GAAG,EAAE;QACV,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,QAAQ,GAAG,WAAW,EAAE,CAAC;gBACzB,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,cAAc,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,8BAA8B,CAAC,CAAC;gBACrE,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,uBAAuB,CACrC,WAAsC;IAEtC,IAAI,QAAQ,GAAa,IAAI,CAAC;IAC9B,IAAI,qBAAqB,GAAsB,IAAI,CAAC;IAEpD,OAAO,CAAC,MAAkB,EAAE,EAAE;QAC5B,kCAAkC;QAClC,IAAI,CAAC,QAAQ,IAAI,qBAAqB,KAAK,MAAM,EAAE,CAAC;YAClD,IAAI,CAAC;gBACH,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC/B,qBAAqB,GAAG,MAAM,CAAC;YACjC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,cAAc,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,yCAAyC,CAAC,CAAC;gBAChF,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAoB;IACnD,QAAQ,EAAE,CAAC;AACb,CAAC"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* - Scheduling recommendations
|
|
9
9
|
*/
|
|
10
10
|
import type { CalendarConfig, DeepWorkBlock } from '../types/config.js';
|
|
11
|
+
import type { CalendarSourceManager } from '../integrations/calendar-source-manager.js';
|
|
11
12
|
export interface GetWorkingCadenceRequest {
|
|
12
13
|
/** Get info for a specific day of week */
|
|
13
14
|
dayOfWeek?: 'Monday' | 'Tuesday' | 'Wednesday' | 'Thursday' | 'Friday' | 'Saturday' | 'Sunday';
|
|
@@ -55,6 +56,18 @@ export interface WorkingCadenceResult {
|
|
|
55
56
|
recommendations: SchedulingRecommendation[];
|
|
56
57
|
/** Generated summary message */
|
|
57
58
|
summary: string;
|
|
59
|
+
/** Focus time statistics from calendar events (optional) */
|
|
60
|
+
focusTimeStats?: {
|
|
61
|
+
/** Total focus time blocks by day of week */
|
|
62
|
+
focusTimeBlocks: Array<{
|
|
63
|
+
day: string;
|
|
64
|
+
duration: number;
|
|
65
|
+
}>;
|
|
66
|
+
/** Days detected as deep work from focusTime events (>=4h) */
|
|
67
|
+
detectedDeepWorkDays: string[];
|
|
68
|
+
/** Whether deep work days were enhanced by focusTime analysis */
|
|
69
|
+
enhanced: boolean;
|
|
70
|
+
};
|
|
58
71
|
}
|
|
59
72
|
export interface DeepWorkBlockInfo {
|
|
60
73
|
day: string;
|
|
@@ -73,6 +86,12 @@ export interface SchedulingRecommendation {
|
|
|
73
86
|
reason: string;
|
|
74
87
|
}
|
|
75
88
|
export declare class WorkingCadenceService {
|
|
89
|
+
private calendarSourceManager?;
|
|
90
|
+
/**
|
|
91
|
+
* Constructor
|
|
92
|
+
* @param calendarSourceManager Optional CalendarSourceManager for focusTime analysis
|
|
93
|
+
*/
|
|
94
|
+
constructor(calendarSourceManager?: CalendarSourceManager);
|
|
76
95
|
/**
|
|
77
96
|
* Get working cadence information
|
|
78
97
|
*/
|
|
@@ -87,8 +106,10 @@ export declare class WorkingCadenceService {
|
|
|
87
106
|
getDayOfWeek(date: string): string;
|
|
88
107
|
/**
|
|
89
108
|
* Generate scheduling recommendations based on calendar config
|
|
109
|
+
* @param config Calendar configuration
|
|
110
|
+
* @param focusTimeStats Optional focus time statistics for enhanced recommendations
|
|
90
111
|
*/
|
|
91
|
-
generateRecommendations(config: CalendarConfig): SchedulingRecommendation[];
|
|
112
|
+
generateRecommendations(config: CalendarConfig, focusTimeStats?: WorkingCadenceResult['focusTimeStats']): SchedulingRecommendation[];
|
|
92
113
|
/**
|
|
93
114
|
* Calculate working hours info from config
|
|
94
115
|
*/
|
|
@@ -115,5 +136,20 @@ export declare class WorkingCadenceService {
|
|
|
115
136
|
private formatHour;
|
|
116
137
|
private isValidDate;
|
|
117
138
|
private errorResult;
|
|
139
|
+
/**
|
|
140
|
+
* Analyze focus time events from calendar
|
|
141
|
+
* Filters events with eventType='focusTime' and calculates total focus time per day
|
|
142
|
+
* @param events Calendar events to analyze
|
|
143
|
+
* @returns Object containing focus time blocks with day and duration
|
|
144
|
+
*/
|
|
145
|
+
private analyzeFocusTimeEvents;
|
|
146
|
+
/**
|
|
147
|
+
* Enhance deep work detection by combining config settings with focus time analysis
|
|
148
|
+
* Days with >=4h (240 minutes) of focusTime events are considered deep work days
|
|
149
|
+
* @param configDeepWorkDays Deep work days from configuration
|
|
150
|
+
* @param focusTimeBlocks Focus time blocks from calendar analysis
|
|
151
|
+
* @returns Combined list of deep work days (unique values)
|
|
152
|
+
*/
|
|
153
|
+
private enhanceDeepWorkDetection;
|
|
118
154
|
}
|
|
119
155
|
//# sourceMappingURL=working-cadence.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"working-cadence.d.ts","sourceRoot":"","sources":["../../src/services/working-cadence.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAc,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"working-cadence.d.ts","sourceRoot":"","sources":["../../src/services/working-cadence.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* - Scheduling recommendations
|
|
9
9
|
*/
|
|
10
10
|
import { ConfigLoader } from '../config/loader.js';
|
|
11
|
+
import { servicesLogger } from '../utils/logger.js';
|
|
11
12
|
const VALID_DAYS = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
|
|
12
13
|
const ALL_DAYS = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
|
|
13
14
|
const DAY_MAP = {
|
|
@@ -20,6 +21,14 @@ const DAY_MAP = {
|
|
|
20
21
|
Sunday: '日',
|
|
21
22
|
};
|
|
22
23
|
export class WorkingCadenceService {
|
|
24
|
+
calendarSourceManager;
|
|
25
|
+
/**
|
|
26
|
+
* Constructor
|
|
27
|
+
* @param calendarSourceManager Optional CalendarSourceManager for focusTime analysis
|
|
28
|
+
*/
|
|
29
|
+
constructor(calendarSourceManager) {
|
|
30
|
+
this.calendarSourceManager = calendarSourceManager;
|
|
31
|
+
}
|
|
23
32
|
/**
|
|
24
33
|
* Get working cadence information
|
|
25
34
|
*/
|
|
@@ -46,20 +55,56 @@ export class WorkingCadenceService {
|
|
|
46
55
|
}
|
|
47
56
|
// Calculate working hours
|
|
48
57
|
const workingHours = this.calculateWorkingHours(config.calendar.workingHours);
|
|
49
|
-
//
|
|
50
|
-
|
|
58
|
+
// Load calendar events and analyze focusTime (if CalendarSourceManager is available)
|
|
59
|
+
let focusTimeStats;
|
|
60
|
+
let enhancedDeepWorkDays = config.calendar.deepWorkDays;
|
|
61
|
+
if (this.calendarSourceManager) {
|
|
62
|
+
try {
|
|
63
|
+
// Get events from the past 4 weeks for better weekly pattern analysis
|
|
64
|
+
const now = new Date();
|
|
65
|
+
const startDate = new Date(now);
|
|
66
|
+
startDate.setDate(startDate.getDate() - 28);
|
|
67
|
+
const endDate = new Date(now);
|
|
68
|
+
endDate.setDate(endDate.getDate() + 7); // Include next week for upcoming focusTime
|
|
69
|
+
const events = await this.calendarSourceManager.getEvents(startDate.toISOString(), endDate.toISOString());
|
|
70
|
+
// Analyze focusTime events
|
|
71
|
+
const { focusTimeBlocks } = this.analyzeFocusTimeEvents(events);
|
|
72
|
+
// Enhance deep work detection with focusTime analysis
|
|
73
|
+
const detectedDeepWorkDays = focusTimeBlocks
|
|
74
|
+
.filter((block) => block.duration >= 240) // >=4 hours
|
|
75
|
+
.map((block) => block.day);
|
|
76
|
+
enhancedDeepWorkDays = this.enhanceDeepWorkDetection(config.calendar.deepWorkDays, focusTimeBlocks);
|
|
77
|
+
// Check if any new days were detected from focusTime
|
|
78
|
+
const enhanced = detectedDeepWorkDays.some((day) => !config.calendar.deepWorkDays.includes(day));
|
|
79
|
+
focusTimeStats = {
|
|
80
|
+
focusTimeBlocks,
|
|
81
|
+
detectedDeepWorkDays,
|
|
82
|
+
enhanced,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
// If calendar loading fails, continue without focusTime analysis
|
|
87
|
+
servicesLogger.error({ err: error }, 'Failed to load calendar events for focusTime analysis');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Build weekly pattern with enhanced deep work days
|
|
91
|
+
const enhancedCalendarConfig = {
|
|
92
|
+
...config.calendar,
|
|
93
|
+
deepWorkDays: enhancedDeepWorkDays,
|
|
94
|
+
};
|
|
95
|
+
const weeklyPattern = this.buildWeeklyPattern(enhancedCalendarConfig);
|
|
51
96
|
// Transform deep work blocks
|
|
52
97
|
const deepWorkBlocks = this.transformDeepWorkBlocks(config.calendar.deepWorkBlocks);
|
|
53
|
-
// Generate recommendations
|
|
54
|
-
const recommendations = this.generateRecommendations(
|
|
55
|
-
// Build specific day info if requested
|
|
98
|
+
// Generate recommendations (with enhanced config for focusTime-aware recommendations)
|
|
99
|
+
const recommendations = this.generateRecommendations(enhancedCalendarConfig, focusTimeStats);
|
|
100
|
+
// Build specific day info if requested (using enhanced deep work days)
|
|
56
101
|
let specificDay;
|
|
57
102
|
if (request?.dayOfWeek || request?.date) {
|
|
58
103
|
const dayOfWeek = request.dayOfWeek || this.getDayOfWeek(request.date);
|
|
59
|
-
specificDay = this.buildSpecificDayInfo(dayOfWeek, request.date,
|
|
104
|
+
specificDay = this.buildSpecificDayInfo(dayOfWeek, request.date, enhancedCalendarConfig, deepWorkBlocks, focusTimeStats);
|
|
60
105
|
}
|
|
61
|
-
// Generate summary
|
|
62
|
-
const summary = this.generateSummary(workingHours, weeklyPattern, config.reminders.weeklyReview);
|
|
106
|
+
// Generate summary (with focusTime info if available)
|
|
107
|
+
const summary = this.generateSummary(workingHours, weeklyPattern, config.reminders.weeklyReview, focusTimeStats);
|
|
63
108
|
return {
|
|
64
109
|
success: true,
|
|
65
110
|
user: {
|
|
@@ -73,6 +118,7 @@ export class WorkingCadenceService {
|
|
|
73
118
|
specificDay,
|
|
74
119
|
recommendations,
|
|
75
120
|
summary,
|
|
121
|
+
focusTimeStats,
|
|
76
122
|
};
|
|
77
123
|
}
|
|
78
124
|
/**
|
|
@@ -97,15 +143,25 @@ export class WorkingCadenceService {
|
|
|
97
143
|
}
|
|
98
144
|
/**
|
|
99
145
|
* Generate scheduling recommendations based on calendar config
|
|
146
|
+
* @param config Calendar configuration
|
|
147
|
+
* @param focusTimeStats Optional focus time statistics for enhanced recommendations
|
|
100
148
|
*/
|
|
101
|
-
generateRecommendations(config) {
|
|
149
|
+
generateRecommendations(config, focusTimeStats) {
|
|
102
150
|
const recommendations = [];
|
|
103
151
|
if (config.deepWorkDays.length > 0) {
|
|
152
|
+
let reason = 'これらの日はDeep Work日として設定されており、集中作業に適しています';
|
|
153
|
+
// Enhance reason if days were detected from focusTime events
|
|
154
|
+
if (focusTimeStats?.enhanced && focusTimeStats.detectedDeepWorkDays.length > 0) {
|
|
155
|
+
const detectedDays = focusTimeStats.detectedDeepWorkDays.filter((day) => !config.deepWorkDays.includes(day));
|
|
156
|
+
if (detectedDays.length > 0) {
|
|
157
|
+
reason += ` (${this.formatDays(detectedDays)}はFocus Timeイベントから検出)`;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
104
160
|
recommendations.push({
|
|
105
161
|
type: 'deep-work',
|
|
106
162
|
recommendation: `複雑なタスクは${this.formatDays(config.deepWorkDays)}にスケジュールしてください`,
|
|
107
163
|
bestDays: config.deepWorkDays,
|
|
108
|
-
reason
|
|
164
|
+
reason,
|
|
109
165
|
});
|
|
110
166
|
}
|
|
111
167
|
if (config.meetingHeavyDays.length > 0) {
|
|
@@ -125,6 +181,17 @@ export class WorkingCadenceService {
|
|
|
125
181
|
reason: 'ミーティング日の合間は短いタスクに適しています',
|
|
126
182
|
});
|
|
127
183
|
}
|
|
184
|
+
// Focus time recommendation if focusTime events exist
|
|
185
|
+
if (focusTimeStats && focusTimeStats.focusTimeBlocks.length > 0) {
|
|
186
|
+
const focusTimeDays = focusTimeStats.focusTimeBlocks.map((block) => block.day);
|
|
187
|
+
const uniqueFocusTimeDays = [...new Set(focusTimeDays)];
|
|
188
|
+
recommendations.push({
|
|
189
|
+
type: 'deep-work',
|
|
190
|
+
recommendation: `${this.formatDays(uniqueFocusTimeDays)}には既存のFocus Timeブロックがあります。この時間を活用してください`,
|
|
191
|
+
bestDays: uniqueFocusTimeDays,
|
|
192
|
+
reason: 'カレンダーにFocus Timeイベントが登録されています。集中作業に最適な時間です',
|
|
193
|
+
});
|
|
194
|
+
}
|
|
128
195
|
return recommendations;
|
|
129
196
|
}
|
|
130
197
|
/**
|
|
@@ -171,7 +238,7 @@ export class WorkingCadenceService {
|
|
|
171
238
|
normalDays,
|
|
172
239
|
};
|
|
173
240
|
}
|
|
174
|
-
buildSpecificDayInfo(dayOfWeek, date, calendarConfig, allDeepWorkBlocks) {
|
|
241
|
+
buildSpecificDayInfo(dayOfWeek, date, calendarConfig, allDeepWorkBlocks, focusTimeStats) {
|
|
175
242
|
const dayType = this.getDayType(dayOfWeek, calendarConfig);
|
|
176
243
|
const dayBlocks = allDeepWorkBlocks.filter((block) => block.day === dayOfWeek);
|
|
177
244
|
const recommendations = [];
|
|
@@ -181,12 +248,32 @@ export class WorkingCadenceService {
|
|
|
181
248
|
const times = dayBlocks.map((b) => `${b.startTime}-${b.endTime}`).join(', ');
|
|
182
249
|
recommendations.push(`Deep Workブロック: ${times}`);
|
|
183
250
|
}
|
|
251
|
+
// Add focusTime info if detected from calendar events
|
|
252
|
+
if (focusTimeStats?.detectedDeepWorkDays.includes(dayOfWeek)) {
|
|
253
|
+
const focusTimeBlock = focusTimeStats.focusTimeBlocks.find((b) => b.day === dayOfWeek);
|
|
254
|
+
if (focusTimeBlock) {
|
|
255
|
+
const hours = Math.floor(focusTimeBlock.duration / 60);
|
|
256
|
+
const minutes = Math.round(focusTimeBlock.duration % 60);
|
|
257
|
+
const durationStr = minutes > 0 ? `${hours}時間${minutes}分` : `${hours}時間`;
|
|
258
|
+
recommendations.push(`Focus Timeイベント: 合計${durationStr}のFocus Timeが登録されています`);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
184
261
|
}
|
|
185
262
|
else if (dayType === 'meeting-heavy') {
|
|
186
263
|
recommendations.push('この日はミーティングが多い日です。ミーティングの合間に短いタスクを処理してください。');
|
|
187
264
|
}
|
|
188
265
|
else {
|
|
189
266
|
recommendations.push('この日は特別な設定がありません。自由にスケジュールを組めます。');
|
|
267
|
+
// Check if there are focusTime blocks on this day
|
|
268
|
+
if (focusTimeStats) {
|
|
269
|
+
const focusTimeBlock = focusTimeStats.focusTimeBlocks.find((b) => b.day === dayOfWeek);
|
|
270
|
+
if (focusTimeBlock) {
|
|
271
|
+
const hours = Math.floor(focusTimeBlock.duration / 60);
|
|
272
|
+
const minutes = Math.round(focusTimeBlock.duration % 60);
|
|
273
|
+
const durationStr = minutes > 0 ? `${hours}時間${minutes}分` : `${hours}時間`;
|
|
274
|
+
recommendations.push(`Focus Timeイベント: 合計${durationStr}のFocus Timeが登録されています`);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
190
277
|
}
|
|
191
278
|
return {
|
|
192
279
|
date,
|
|
@@ -196,11 +283,16 @@ export class WorkingCadenceService {
|
|
|
196
283
|
recommendations,
|
|
197
284
|
};
|
|
198
285
|
}
|
|
199
|
-
generateSummary(workingHours, weeklyPattern, weeklyReview) {
|
|
286
|
+
generateSummary(workingHours, weeklyPattern, weeklyReview, focusTimeStats) {
|
|
200
287
|
const lines = [];
|
|
201
288
|
lines.push(`勤務時間: ${workingHours.start}-${workingHours.end} (${Math.floor(workingHours.totalMinutes / 60)}時間)`);
|
|
202
289
|
if (weeklyPattern.deepWorkDays.length > 0) {
|
|
203
|
-
|
|
290
|
+
let deepWorkLine = `Deep Work日: ${this.formatDays(weeklyPattern.deepWorkDays)}`;
|
|
291
|
+
// Add indicator if days were enhanced by focusTime analysis
|
|
292
|
+
if (focusTimeStats?.enhanced) {
|
|
293
|
+
deepWorkLine += ' (Focus Time分析により強化)';
|
|
294
|
+
}
|
|
295
|
+
lines.push(deepWorkLine);
|
|
204
296
|
}
|
|
205
297
|
if (weeklyPattern.meetingHeavyDays.length > 0) {
|
|
206
298
|
lines.push(`ミーティング集中日: ${this.formatDays(weeklyPattern.meetingHeavyDays)}`);
|
|
@@ -208,6 +300,14 @@ export class WorkingCadenceService {
|
|
|
208
300
|
if (weeklyReview?.enabled) {
|
|
209
301
|
lines.push(`週次レビュー: ${DAY_MAP[weeklyReview.day] || weeklyReview.day}曜 ${weeklyReview.time}`);
|
|
210
302
|
}
|
|
303
|
+
// Add focusTime summary if available
|
|
304
|
+
if (focusTimeStats && focusTimeStats.focusTimeBlocks.length > 0) {
|
|
305
|
+
const totalFocusMinutes = focusTimeStats.focusTimeBlocks.reduce((sum, block) => sum + block.duration, 0);
|
|
306
|
+
const hours = Math.floor(totalFocusMinutes / 60);
|
|
307
|
+
const minutes = Math.round(totalFocusMinutes % 60);
|
|
308
|
+
const durationStr = minutes > 0 ? `${hours}時間${minutes}分` : `${hours}時間`;
|
|
309
|
+
lines.push(`Focus Time: 週合計${durationStr}`);
|
|
310
|
+
}
|
|
211
311
|
return lines.join('\n');
|
|
212
312
|
}
|
|
213
313
|
timeToMinutes(time) {
|
|
@@ -233,5 +333,44 @@ export class WorkingCadenceService {
|
|
|
233
333
|
summary: '',
|
|
234
334
|
};
|
|
235
335
|
}
|
|
336
|
+
/**
|
|
337
|
+
* Analyze focus time events from calendar
|
|
338
|
+
* Filters events with eventType='focusTime' and calculates total focus time per day
|
|
339
|
+
* @param events Calendar events to analyze
|
|
340
|
+
* @returns Object containing focus time blocks with day and duration
|
|
341
|
+
*/
|
|
342
|
+
analyzeFocusTimeEvents(events) {
|
|
343
|
+
// Filter events with eventType='focusTime'
|
|
344
|
+
const focusTimeEvents = events.filter((e) => e.eventType === 'focusTime');
|
|
345
|
+
// Calculate total focus time per day
|
|
346
|
+
const focusTimeByDay = new Map();
|
|
347
|
+
for (const event of focusTimeEvents) {
|
|
348
|
+
const day = new Date(event.start).toLocaleDateString('en-US', { weekday: 'long' });
|
|
349
|
+
const duration = (new Date(event.end).getTime() - new Date(event.start).getTime()) / (1000 * 60); // minutes
|
|
350
|
+
focusTimeByDay.set(day, (focusTimeByDay.get(day) || 0) + duration);
|
|
351
|
+
}
|
|
352
|
+
// Return focus time statistics
|
|
353
|
+
const focusTimeBlocks = Array.from(focusTimeByDay.entries()).map(([day, duration]) => ({
|
|
354
|
+
day,
|
|
355
|
+
duration,
|
|
356
|
+
}));
|
|
357
|
+
return { focusTimeBlocks };
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Enhance deep work detection by combining config settings with focus time analysis
|
|
361
|
+
* Days with >=4h (240 minutes) of focusTime events are considered deep work days
|
|
362
|
+
* @param configDeepWorkDays Deep work days from configuration
|
|
363
|
+
* @param focusTimeBlocks Focus time blocks from calendar analysis
|
|
364
|
+
* @returns Combined list of deep work days (unique values)
|
|
365
|
+
*/
|
|
366
|
+
enhanceDeepWorkDetection(configDeepWorkDays, focusTimeBlocks) {
|
|
367
|
+
// Days with >=4h (240 minutes) of focusTime events are considered deep work days
|
|
368
|
+
const focusTimeDays = focusTimeBlocks
|
|
369
|
+
.filter((block) => block.duration >= 240)
|
|
370
|
+
.map((block) => block.day);
|
|
371
|
+
// Combine config.deepWorkDays with focusTime analysis (remove duplicates)
|
|
372
|
+
const allDeepWorkDays = new Set([...configDeepWorkDays, ...focusTimeDays]);
|
|
373
|
+
return Array.from(allDeepWorkDays);
|
|
374
|
+
}
|
|
236
375
|
}
|
|
237
376
|
//# sourceMappingURL=working-cadence.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"working-cadence.js","sourceRoot":"","sources":["../../src/services/working-cadence.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"working-cadence.js","sourceRoot":"","sources":["../../src/services/working-cadence.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,24 @@ export interface CalendarToolsContext {
|
|
|
24
24
|
setWorkingCadenceService: (service: WorkingCadenceService) => void;
|
|
25
25
|
initializeServices: (config: UserConfig) => void;
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Input for finding available time slots
|
|
29
|
+
*
|
|
30
|
+
* @property durationMinutes - Required duration in minutes
|
|
31
|
+
* @property startDate - Start date for search (ISO 8601 format)
|
|
32
|
+
* @property endDate - End date for search (ISO 8601 format)
|
|
33
|
+
* @property preferDeepWork - Prefer deep work time slots
|
|
34
|
+
* @property minDurationMinutes - Minimum slot duration in minutes
|
|
35
|
+
* @property maxDurationMinutes - Maximum slot duration in minutes
|
|
36
|
+
* @property preferredWorkingLocation - Filter slots by working location preference.
|
|
37
|
+
* Valid values: 'homeOffice', 'officeLocation', 'any' (default: 'any')
|
|
38
|
+
* Requirement: 3.7, 7.5 (google-calendar-event-types spec)
|
|
39
|
+
* @property respectBlockingEventTypes - Whether to respect blocking event types
|
|
40
|
+
* (outOfOffice, focusTime) when calculating availability.
|
|
41
|
+
* When true (default), these event types block the time slot.
|
|
42
|
+
* When false, only 'default' events are considered blocking.
|
|
43
|
+
* Requirement: 7.5 (google-calendar-event-types spec)
|
|
44
|
+
*/
|
|
27
45
|
export interface FindAvailableSlotsInput {
|
|
28
46
|
durationMinutes: number;
|
|
29
47
|
startDate?: string;
|
|
@@ -31,11 +49,27 @@ export interface FindAvailableSlotsInput {
|
|
|
31
49
|
preferDeepWork?: boolean;
|
|
32
50
|
minDurationMinutes?: number;
|
|
33
51
|
maxDurationMinutes?: number;
|
|
52
|
+
/** Filter slots by working location preference. Default: 'any' */
|
|
53
|
+
preferredWorkingLocation?: 'homeOffice' | 'officeLocation' | 'any';
|
|
54
|
+
/** Whether to respect blocking event types (outOfOffice, focusTime). Default: true */
|
|
55
|
+
respectBlockingEventTypes?: boolean;
|
|
34
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Input for listing calendar events
|
|
59
|
+
*
|
|
60
|
+
* @property startDate - Start date in ISO 8601 format (e.g., 2025-01-15)
|
|
61
|
+
* @property endDate - End date in ISO 8601 format (e.g., 2025-01-20)
|
|
62
|
+
* @property calendarId - Optional calendar ID to filter events
|
|
63
|
+
* @property eventTypes - Optional array of event type names to filter results.
|
|
64
|
+
* Valid types: 'default', 'outOfOffice', 'focusTime', 'workingLocation', 'birthday', 'fromGmail'
|
|
65
|
+
* When specified, only events matching these types are returned.
|
|
66
|
+
* When omitted, all event types are returned.
|
|
67
|
+
*/
|
|
35
68
|
export interface ListCalendarEventsInput {
|
|
36
69
|
startDate: string;
|
|
37
70
|
endDate: string;
|
|
38
71
|
calendarId?: string;
|
|
72
|
+
eventTypes?: string[];
|
|
39
73
|
}
|
|
40
74
|
export interface RespondToCalendarEventInput {
|
|
41
75
|
eventId: string;
|
|
@@ -49,6 +83,32 @@ export interface RespondToCalendarEventsBatchInput {
|
|
|
49
83
|
response: 'accept' | 'decline' | 'tentative';
|
|
50
84
|
comment?: string;
|
|
51
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Input for creating a calendar event
|
|
88
|
+
*
|
|
89
|
+
* @property title - Event title/summary
|
|
90
|
+
* @property startDate - Start date/time in ISO 8601 format (e.g., 2025-01-15T10:00:00+09:00)
|
|
91
|
+
* @property endDate - End date/time in ISO 8601 format (e.g., 2025-01-15T11:00:00+09:00)
|
|
92
|
+
* @property location - Optional event location
|
|
93
|
+
* @property notes - Optional event notes/description
|
|
94
|
+
* @property calendarName - Optional calendar name to create the event in
|
|
95
|
+
* @property alarms - Optional array of alarm settings (e.g., ['-15m', '-1h'])
|
|
96
|
+
* @property preferredSource - Optional preferred calendar source ('eventkit' or 'google')
|
|
97
|
+
* @property eventType - Optional event type. Valid types:
|
|
98
|
+
* 'default' (regular event), 'outOfOffice', 'focusTime', 'workingLocation', 'birthday'.
|
|
99
|
+
* Note: 'fromGmail' cannot be created via API.
|
|
100
|
+
* When omitted, defaults to 'default'.
|
|
101
|
+
* @property autoDeclineMode - For outOfOffice/focusTime events: auto-decline behavior.
|
|
102
|
+
* Valid values: 'declineNone', 'declineAllConflictingInvitations', 'declineOnlyNewConflictingInvitations'
|
|
103
|
+
* @property declineMessage - For outOfOffice/focusTime events: custom decline message
|
|
104
|
+
* @property chatStatus - For focusTime events: chat status during focus time.
|
|
105
|
+
* Valid values: 'available', 'doNotDisturb'
|
|
106
|
+
* @property workingLocationType - For workingLocation events: type of working location.
|
|
107
|
+
* Valid values: 'homeOffice', 'officeLocation', 'customLocation'
|
|
108
|
+
* @property workingLocationLabel - For workingLocation events: optional label for the location
|
|
109
|
+
* @property birthdayType - For birthday events: type of birthday.
|
|
110
|
+
* Valid values: 'birthday', 'anniversary', 'other'
|
|
111
|
+
*/
|
|
52
112
|
export interface CreateCalendarEventInput {
|
|
53
113
|
title: string;
|
|
54
114
|
startDate: string;
|
|
@@ -58,6 +118,13 @@ export interface CreateCalendarEventInput {
|
|
|
58
118
|
calendarName?: string;
|
|
59
119
|
alarms?: string[];
|
|
60
120
|
preferredSource?: 'eventkit' | 'google';
|
|
121
|
+
eventType?: string;
|
|
122
|
+
autoDeclineMode?: string;
|
|
123
|
+
declineMessage?: string;
|
|
124
|
+
chatStatus?: string;
|
|
125
|
+
workingLocationType?: string;
|
|
126
|
+
workingLocationLabel?: string;
|
|
127
|
+
birthdayType?: string;
|
|
61
128
|
}
|
|
62
129
|
export interface DeleteCalendarEventInput {
|
|
63
130
|
eventId: string;
|
|
@@ -91,7 +158,8 @@ export declare function handleFindAvailableSlots(ctx: CalendarToolsContext, args
|
|
|
91
158
|
* list_calendar_events handler
|
|
92
159
|
*
|
|
93
160
|
* List calendar events for a specified period.
|
|
94
|
-
*
|
|
161
|
+
* Supports filtering by event types (default, outOfOffice, focusTime, workingLocation, birthday, fromGmail).
|
|
162
|
+
* Requirement: 16.1-16.12, Task 27, Task 18 (eventTypes filter)
|
|
95
163
|
*/
|
|
96
164
|
export declare function handleListCalendarEvents(ctx: CalendarToolsContext, args: ListCalendarEventsInput): Promise<{
|
|
97
165
|
content: {
|
|
@@ -126,8 +194,19 @@ export declare function handleRespondToCalendarEventsBatch(ctx: CalendarToolsCon
|
|
|
126
194
|
/**
|
|
127
195
|
* create_calendar_event handler
|
|
128
196
|
*
|
|
129
|
-
* Create a new calendar event.
|
|
130
|
-
* Requirement: 18.1-18.11, Task 29
|
|
197
|
+
* Create a new calendar event with support for Google Calendar event types.
|
|
198
|
+
* Requirement: 18.1-18.11, Task 29, Task 19 (Event Type Support)
|
|
199
|
+
*
|
|
200
|
+
* Supports creating:
|
|
201
|
+
* - default: Standard calendar events
|
|
202
|
+
* - outOfOffice: Vacation/OOO blocks with auto-decline
|
|
203
|
+
* - focusTime: Deep work blocks with chat status
|
|
204
|
+
* - workingLocation: Home/office/custom location events
|
|
205
|
+
* - birthday: Birthday/anniversary events
|
|
206
|
+
*
|
|
207
|
+
* Note: 'fromGmail' events cannot be created via API (read-only).
|
|
208
|
+
* Note: EventKit only supports 'default' event type. Non-default event types
|
|
209
|
+
* are automatically routed to Google Calendar.
|
|
131
210
|
*/
|
|
132
211
|
export declare function handleCreateCalendarEvent(ctx: CalendarToolsContext, args: CreateCalendarEventInput): Promise<{
|
|
133
212
|
content: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/tools/calendar/handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAC3F,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAClG,OAAO,KAAK,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/tools/calendar/handlers.ts"],"names":[],"mappings":"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"}
|