crewly 1.8.4 → 1.8.6
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/config/roles/_common/wiki-instructions.md +33 -0
- package/config/roles/orchestrator/prompt.md +66 -4
- package/config/roles/team-leader/prompt.md +38 -0
- package/config/skills/agent/core/wiki-query/SKILL.md +66 -0
- package/config/skills/agent/core/wiki-query/execute.sh +107 -0
- package/config/skills/orchestrator/wiki-bookkeep/SKILL.md +71 -0
- package/config/skills/orchestrator/wiki-bookkeep/execute.sh +72 -0
- package/config/skills/orchestrator/wiki-ingest/SKILL.md +63 -0
- package/config/skills/orchestrator/wiki-ingest/execute.sh +113 -0
- package/config/skills/orchestrator/wiki-process-queue/SKILL.md +71 -0
- package/config/skills/orchestrator/wiki-process-queue/execute.sh +93 -0
- package/config/skills/orchestrator/wiki-queue-add/SKILL.md +89 -0
- package/config/skills/orchestrator/wiki-queue-add/execute.sh +115 -0
- package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.js +20 -0
- package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js +15 -0
- package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.d.ts +134 -0
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.js +718 -0
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/wiki/wiki.routes.d.ts +23 -0
- package/dist/backend/backend/src/controllers/wiki/wiki.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/wiki/wiki.routes.js +43 -0
- package/dist/backend/backend/src/controllers/wiki/wiki.routes.js.map +1 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +65 -0
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.js +4 -0
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.d.ts +142 -0
- package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.js +265 -0
- package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.js.map +1 -0
- package/dist/backend/backend/src/services/session/pty/pty-session.d.ts +28 -0
- package/dist/backend/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.js +162 -4
- package/dist/backend/backend/src/services/session/pty/pty-session.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/referenced-by.resolver.d.ts +69 -0
- package/dist/backend/backend/src/services/wiki/referenced-by.resolver.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/referenced-by.resolver.js +174 -0
- package/dist/backend/backend/src/services/wiki/referenced-by.resolver.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/schema-loader.service.d.ts +57 -0
- package/dist/backend/backend/src/services/wiki/schema-loader.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/schema-loader.service.js +183 -0
- package/dist/backend/backend/src/services/wiki/schema-loader.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.d.ts +86 -0
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.js +187 -0
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep.service.d.ts +116 -0
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep.service.js +299 -0
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.d.ts +74 -0
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.js +154 -0
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts +100 -0
- package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-ingest.service.js +212 -0
- package/dist/backend/backend/src/services/wiki/wiki-ingest.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-process.service.d.ts +84 -0
- package/dist/backend/backend/src/services/wiki/wiki-process.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-process.service.js +138 -0
- package/dist/backend/backend/src/services/wiki/wiki-process.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-query.service.d.ts +115 -0
- package/dist/backend/backend/src/services/wiki/wiki-query.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-query.service.js +291 -0
- package/dist/backend/backend/src/services/wiki/wiki-query.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-queue.service.d.ts +115 -0
- package/dist/backend/backend/src/services/wiki/wiki-queue.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-queue.service.js +261 -0
- package/dist/backend/backend/src/services/wiki/wiki-queue.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki.types.d.ts +84 -0
- package/dist/backend/backend/src/services/wiki/wiki.types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki.types.js +10 -0
- package/dist/backend/backend/src/services/wiki/wiki.types.js.map +1 -0
- package/frontend/dist/assets/{index-b279da34.js → index-cc115bb4.js} +246 -246
- package/frontend/dist/assets/{index-c07e04c0.css → index-db3f5041.css} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty-session.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/session/pty/pty-session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pty-session.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/session/pty/pty-session.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EACN,qBAAqB,EACrB,qBAAqB,GACrB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAmB,MAAM,8BAA8B,CAAC;AAE9E;;;GAGG;AACH,IAAI,YAAY,GAAqB,GAAG,CAAC,KAAK,CAAC;AAC/C,MAAM,UAAU,0BAA0B,CACzC,IAAsB;IAEtB,MAAM,QAAQ,GAAG,YAAY,CAAC;IAC9B,YAAY,GAAG,IAAI,CAAC;IACpB,OAAO,GAAG,EAAE;QACX,YAAY,GAAG,QAAQ,CAAC;IACzB,CAAC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,2BAA2B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAU,CAAC;AACjE,MAAM,2BAA2B,GAAG;IACnC,cAAc;IACd,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;CACR,CAAC;AAEF,SAAS,qBAAqB,CAAC,GAAY;IAC1C,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7D,OAAO,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,WAAW,CAAC,EAAU;IAC9B,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO;IACpB,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IACjC,mEAAmE;IACnE,kEAAkE;IAClE,+DAA+D;IAC/D,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB;IAC5B,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,QAAQ,CAAC,uCAAuC,EAAE;YAC7D,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,GAAG;SACZ,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED,2EAA2E;AAC3E,SAAS,iBAAiB;IACzB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,QAAQ,CAAC,8BAA8B,EAAE;YACpD,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,GAAG;SACZ,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACnC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,sBAAuB,SAAQ,KAAK;IAGxB;IAFjB,YACC,OAAe,EACC,WAOf;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QATC,gBAAW,GAAX,WAAW,CAO1B;QAGD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACtC,CAAC;CACD;AAED,SAAS,iBAAiB,CACzB,OAAe,EACf,IAAc,EACd,OAAwC,EACxC,MAAuB;IAEvB,IAAI,SAAS,GAAY,IAAI,CAAC;IAC9B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,2BAA2B,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QAC/E,MAAM,SAAS,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,0CAA0C,EAAE;gBACvD,OAAO;gBACP,SAAS;gBACT,OAAO;aACP,CAAC,CAAC;YACH,WAAW,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,CAAC;YACJ,OAAO,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,SAAS,GAAG,GAAG,CAAC;YAChB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,8DAA8D;gBAC9D,MAAM,GAAG,CAAC;YACX,CAAC;YACD,kDAAkD;QACnD,CAAC;IACF,CAAC;IAED,mDAAmD;IACnD,MAAM,gBAAgB,GAAG,oBAAoB,EAAE,CAAC;IAChD,MAAM,aAAa,GAAG,iBAAiB,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAElF,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IACC,gBAAgB,KAAK,IAAI;QACzB,aAAa,KAAK,IAAI;QACtB,gBAAgB,GAAG,aAAa,GAAG,IAAI,EACtC,CAAC;QACF,SAAS,GAAG,+BAA+B,gBAAgB,MAAM,aAAa,8FAA8F,CAAC;IAC9K,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1C,SAAS;YACR,gNAAgN,CAAC;IACnN,CAAC;SAAM,CAAC;QACP,SAAS,GAAG,2CAA2C,CAAC;IACzD,CAAC;IAED,MAAM,OAAO,GAAG,0BAA0B,2BAA2B,CAAC,MAAM,cAAc,MAAM,KAAK,SAAS,EAAE,CAAC;IACjH,MAAM,IAAI,sBAAsB,CAAC,OAAO,EAAE;QACzC,QAAQ,EAAE,2BAA2B,CAAC,MAAM;QAC5C,SAAS,EAAE,MAAM;QACjB,gBAAgB;QAChB,aAAa;QACb,OAAO;QACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC1B,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,UAAU;IA+CL;IACA;IA/CjB;;OAEG;IACK,UAAU,CAAW;IAE7B;;OAEG;IACK,aAAa,GAAgC,IAAI,GAAG,EAAE,CAAC;IAE/D;;OAEG;IACK,aAAa,GAAgC,IAAI,GAAG,EAAE,CAAC;IAE/D;;OAEG;IACK,MAAM,GAAG,KAAK,CAAC;IAEvB;;OAEG;IACK,MAAM,CAAkB;IAEhC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,YACiB,IAAY,EACZ,GAAW,EAC3B,OAAuB;QAFP,SAAI,GAAJ,IAAI,CAAQ;QACZ,QAAG,GAAH,GAAG,CAAQ;QAG3B,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;QAEtF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACxC,IAAI;YACJ,GAAG;YACH,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,qBAAqB;YAC3C,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,qBAAqB;SAC3C,CAAC,CAAC;QAEH,8DAA8D;QAC9D,MAAM,UAAU,GAA2B;YAC1C,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;YAChC,GAAG,OAAO,CAAC,GAAG;YACd,yCAAyC;YACzC,IAAI,EAAE,gBAAgB;SACtB,CAAC;QAEF,IAAI,CAAC;YACJ,gEAAgE;YAChE,gEAAgE;YAChE,6DAA6D;YAC7D,+DAA+D;YAC/D,uCAAuC;YACvC,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAClC,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,IAAI,IAAI,EAAE,EAClB;gBACC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,qBAAqB;gBAC3C,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,qBAAqB;gBAC3C,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,GAAG,EAAE,UAAU;aACf,EACD,IAAI,CAAC,MAAM,CACX,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE;gBACpD,IAAI;gBACJ,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG;gBACxB,OAAO,EAAE,OAAO,CAAC,OAAO;aACxB,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,UAAU,EAAE,CAAC;YACrB,+DAA+D;YAC/D,2DAA2D;YAC3D,4DAA4D;YAC5D,MAAM,MAAM,GAAG,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACrF,MAAM,WAAW,GAChB,UAAU,YAAY,sBAAsB;gBAC3C,CAAC,CAAC,UAAU,CAAC,WAAW;gBACxB,CAAC,CAAC,SAAS,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;gBAChD,IAAI;gBACJ,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,KAAK,EAAE,MAAM;gBACb,WAAW;gBACX,KAAK,EAAE,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aACjE,CAAC,CAAC;YACH,MAAM,UAAU,CAAC;QAClB,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAI,GAAG;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;IAC5B,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,QAAgC;QACtC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,aAAa,CAAC,kBAAkB,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CACd,gCAAgC,aAAa,CAAC,kBAAkB,0BAA0B,IAAI,CAAC,IAAI,EAAE,CACrG,CAAC;QACH,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEjC,mCAAmC;QACnC,OAAO,GAAG,EAAE;YACX,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,QAAgC;QACtC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,aAAa,CAAC,kBAAkB,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CACd,gCAAgC,aAAa,CAAC,kBAAkB,0BAA0B,IAAI,CAAC,IAAI,EAAE,CACrG,CAAC;QACH,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEjC,mCAAmC;QACnC,OAAO,GAAG,EAAE;YACX,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,IAAY;QACjB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,IAAY,EAAE,IAAY;QAChC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,sBAAsB;QACtB,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAClF,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,UAAU,IAAI,qCAAqC,CAAC,CAAC;QACtG,CAAC;QAED,4DAA4D;QAC5D,IAAI,IAAI,GAAG,aAAa,CAAC,eAAe,IAAI,IAAI,GAAG,aAAa,CAAC,eAAe,EAAE,CAAC;YAClF,MAAM,IAAI,KAAK,CACd,mCAAmC,IAAI,SAAS,aAAa,CAAC,eAAe,KAAK;gBACjF,QAAQ,IAAI,SAAS,aAAa,CAAC,eAAe,GAAG,CACtD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,MAAe;QACnB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,CAAC,wBAAwB;QACjC,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE7B,8CAA8C;QAC9C,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,SAAS;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAEhC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAEpE,oCAAoC;QACpC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC;gBACJ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kEAAkE,EAAE;oBACrF,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACvD,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QAED,yCAAyC;QACzC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,2BAA2B,CAAC,CAAC,CAAC;QAErG,+BAA+B;QAC/B,IAAI,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACR,8CAA8C;QAC/C,CAAC;QAED,kDAAkD;QAClD,IAAI,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACpE,CAAC;QAAC,MAAM,CAAC;YACR,oDAAoD;QACrD,CAAC;QAED,8CAA8C;QAC9C,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,QAAQ;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED;;;;;;;;OAQG;IACH,mBAAmB;QAClB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAChC,+DAA+D;YAC/D,QAAQ,CAAC,YAAY,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACR,mEAAmE;YACnE,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IAED;;OAEG;IACK,kBAAkB;QACzB,qBAAqB;QACrB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAClB,yEAAyE;gBACzE,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC1C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBAClC,IAAI,CAAC;wBACJ,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBAChB,wDAAwD;wBACxD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE;4BAC3C,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;yBAC7D,CAAC,CAAC;oBACJ,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC,CAAC,CAAC;QAEH,sBAAsB;QACtB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;YACvC,yEAAyE;YACzE,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;YAC1C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBAClC,IAAI,CAAC;oBACJ,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACpB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,wDAAwD;oBACxD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE;wBAC3C,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;qBAC7D,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;YAED,4BAA4B;YAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,WAAW,CAAC,GAAsB;QACzC,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACrB,CAAC;QACF,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;CACD"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Symbolic `referenced_by:` resolver.
|
|
3
|
+
*
|
|
4
|
+
* SCHEMA.md `referenced_by:` entries use `<kind>:<name>` symbols
|
|
5
|
+
* (`skill:get-sops`, `service:sop.service`) rather than absolute filesystem
|
|
6
|
+
* paths, so SCHEMA.md stays portable across users, machines, and runtimes
|
|
7
|
+
* (Sonnet vs DeepSeek install roots differ, $HOME differs, Pro vs OSS install
|
|
8
|
+
* roots differ).
|
|
9
|
+
*
|
|
10
|
+
* This resolver maps a symbol to the absolute path on the current machine.
|
|
11
|
+
*
|
|
12
|
+
* Per v2.1 spec §2 (Symbolic referenced_by registry):
|
|
13
|
+
* `skill:<name>` → config/skills/{agent/core, orchestrator}/<name>/execute.sh
|
|
14
|
+
* `service:<name>` → backend/src/services/<dir>/<name>.service.ts
|
|
15
|
+
*
|
|
16
|
+
* @module services/wiki/referenced-by.resolver
|
|
17
|
+
*/
|
|
18
|
+
import { ReferencedBySymbol, ResolvedReference } from './wiki.types.js';
|
|
19
|
+
/**
|
|
20
|
+
* Resolves SCHEMA.md `referenced_by:` symbols to absolute filesystem paths.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* const resolver = new ReferencedByResolver('/path/to/crewly');
|
|
24
|
+
* const resolved = await resolver.resolve('skill:get-sops');
|
|
25
|
+
* // resolved.absolutePath === '/path/to/crewly/config/skills/agent/core/get-sops/execute.sh'
|
|
26
|
+
*/
|
|
27
|
+
export declare class ReferencedByResolver {
|
|
28
|
+
private readonly crewlyRoot;
|
|
29
|
+
private readonly cache;
|
|
30
|
+
/**
|
|
31
|
+
* @param crewlyRoot - Absolute path to the Crewly project root (contains
|
|
32
|
+
* `config/` and `backend/`). Must be absolute — relative paths are
|
|
33
|
+
* rejected so the resolver behaves deterministically regardless of cwd.
|
|
34
|
+
*/
|
|
35
|
+
constructor(crewlyRoot: string);
|
|
36
|
+
/**
|
|
37
|
+
* Resolve a symbol to an absolute path.
|
|
38
|
+
*
|
|
39
|
+
* @param symbol - A `skill:<name>` or `service:<name>` reference.
|
|
40
|
+
* @returns The resolved reference. `exists: false` if no candidate file
|
|
41
|
+
* was found on disk — callers should treat this as a lint warning.
|
|
42
|
+
* @throws If the symbol has an unknown kind prefix.
|
|
43
|
+
*/
|
|
44
|
+
resolve(symbol: ReferencedBySymbol): Promise<ResolvedReference>;
|
|
45
|
+
/**
|
|
46
|
+
* Resolve many symbols in one pass.
|
|
47
|
+
*/
|
|
48
|
+
resolveAll(symbols: ReferencedBySymbol[]): Promise<ResolvedReference[]>;
|
|
49
|
+
/**
|
|
50
|
+
* Clear the in-memory cache. Useful in tests, or after a vault change
|
|
51
|
+
* has moved a referenced file.
|
|
52
|
+
*/
|
|
53
|
+
clearCache(): void;
|
|
54
|
+
private parseSymbol;
|
|
55
|
+
/**
|
|
56
|
+
* Locate a file matching `<name>/<fileSuffix>` (skill) or `<name><fileSuffix>`
|
|
57
|
+
* (service) inside a search directory. Returns absolute path or null.
|
|
58
|
+
*
|
|
59
|
+
* For skills: the name IS a directory name → look for `<dir>/<name>/execute.sh`.
|
|
60
|
+
* For services: the name is a basename → recurse for `<name>.service.ts`.
|
|
61
|
+
*/
|
|
62
|
+
private findInDir;
|
|
63
|
+
/**
|
|
64
|
+
* The path we'd expect a missing symbol to live at — used so lint can
|
|
65
|
+
* tell the user where to create the file.
|
|
66
|
+
*/
|
|
67
|
+
private fallbackCanonicalPath;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=referenced-by.resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"referenced-by.resolver.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/wiki/referenced-by.resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AA4BxE;;;;;;;GAOG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwC;IAE9D;;;;OAIG;gBACS,UAAU,EAAE,MAAM;IAS9B;;;;;;;OAOG;IACG,OAAO,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsCrE;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAI7E;;;OAGG;IACH,UAAU,IAAI,IAAI;IAQlB,OAAO,CAAC,WAAW;IA0BnB;;;;;;OAMG;YACW,SAAS;IAmCvB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;CAS9B"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Symbolic `referenced_by:` resolver.
|
|
3
|
+
*
|
|
4
|
+
* SCHEMA.md `referenced_by:` entries use `<kind>:<name>` symbols
|
|
5
|
+
* (`skill:get-sops`, `service:sop.service`) rather than absolute filesystem
|
|
6
|
+
* paths, so SCHEMA.md stays portable across users, machines, and runtimes
|
|
7
|
+
* (Sonnet vs DeepSeek install roots differ, $HOME differs, Pro vs OSS install
|
|
8
|
+
* roots differ).
|
|
9
|
+
*
|
|
10
|
+
* This resolver maps a symbol to the absolute path on the current machine.
|
|
11
|
+
*
|
|
12
|
+
* Per v2.1 spec §2 (Symbolic referenced_by registry):
|
|
13
|
+
* `skill:<name>` → config/skills/{agent/core, orchestrator}/<name>/execute.sh
|
|
14
|
+
* `service:<name>` → backend/src/services/<dir>/<name>.service.ts
|
|
15
|
+
*
|
|
16
|
+
* @module services/wiki/referenced-by.resolver
|
|
17
|
+
*/
|
|
18
|
+
import * as path from 'path';
|
|
19
|
+
import { existsSync } from 'fs';
|
|
20
|
+
import * as fs from 'fs/promises';
|
|
21
|
+
const SEARCH_PLANS = {
|
|
22
|
+
skill: {
|
|
23
|
+
// Skills live under config/skills/{agent/core, orchestrator}/<name>/execute.sh
|
|
24
|
+
searchDirs: ['config/skills/agent/core', 'config/skills/orchestrator'],
|
|
25
|
+
fileSuffix: 'execute.sh',
|
|
26
|
+
},
|
|
27
|
+
service: {
|
|
28
|
+
// Symbol `service:sop.service` → file basename `sop.service.ts`. The `.service`
|
|
29
|
+
// segment is part of the symbol's name, so we only append `.ts` when forming
|
|
30
|
+
// the wanted filename. (Resolves backend/src/services/<area>/<name>.ts.)
|
|
31
|
+
searchDirs: ['backend/src/services'],
|
|
32
|
+
fileSuffix: '.ts',
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Resolves SCHEMA.md `referenced_by:` symbols to absolute filesystem paths.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* const resolver = new ReferencedByResolver('/path/to/crewly');
|
|
40
|
+
* const resolved = await resolver.resolve('skill:get-sops');
|
|
41
|
+
* // resolved.absolutePath === '/path/to/crewly/config/skills/agent/core/get-sops/execute.sh'
|
|
42
|
+
*/
|
|
43
|
+
export class ReferencedByResolver {
|
|
44
|
+
crewlyRoot;
|
|
45
|
+
cache = new Map();
|
|
46
|
+
/**
|
|
47
|
+
* @param crewlyRoot - Absolute path to the Crewly project root (contains
|
|
48
|
+
* `config/` and `backend/`). Must be absolute — relative paths are
|
|
49
|
+
* rejected so the resolver behaves deterministically regardless of cwd.
|
|
50
|
+
*/
|
|
51
|
+
constructor(crewlyRoot) {
|
|
52
|
+
if (!path.isAbsolute(crewlyRoot)) {
|
|
53
|
+
throw new Error(`ReferencedByResolver: crewlyRoot must be absolute, got "${crewlyRoot}"`);
|
|
54
|
+
}
|
|
55
|
+
this.crewlyRoot = crewlyRoot;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Resolve a symbol to an absolute path.
|
|
59
|
+
*
|
|
60
|
+
* @param symbol - A `skill:<name>` or `service:<name>` reference.
|
|
61
|
+
* @returns The resolved reference. `exists: false` if no candidate file
|
|
62
|
+
* was found on disk — callers should treat this as a lint warning.
|
|
63
|
+
* @throws If the symbol has an unknown kind prefix.
|
|
64
|
+
*/
|
|
65
|
+
async resolve(symbol) {
|
|
66
|
+
const cached = this.cache.get(symbol);
|
|
67
|
+
if (cached) {
|
|
68
|
+
return cached;
|
|
69
|
+
}
|
|
70
|
+
const parsed = this.parseSymbol(symbol);
|
|
71
|
+
const plan = SEARCH_PLANS[parsed.kind];
|
|
72
|
+
let absolutePath = null;
|
|
73
|
+
let exists = false;
|
|
74
|
+
for (const dir of plan.searchDirs) {
|
|
75
|
+
const candidate = await this.findInDir(path.join(this.crewlyRoot, dir), parsed.name, plan.fileSuffix, parsed.kind);
|
|
76
|
+
if (candidate) {
|
|
77
|
+
absolutePath = candidate;
|
|
78
|
+
exists = true;
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// If nothing found, emit a path that *would* be the canonical location
|
|
83
|
+
// so lint can surface a clear "expected here, missing" message.
|
|
84
|
+
if (!absolutePath) {
|
|
85
|
+
absolutePath = this.fallbackCanonicalPath(parsed.kind, parsed.name);
|
|
86
|
+
exists = existsSync(absolutePath);
|
|
87
|
+
}
|
|
88
|
+
const result = { symbol, absolutePath, exists };
|
|
89
|
+
this.cache.set(symbol, result);
|
|
90
|
+
return result;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Resolve many symbols in one pass.
|
|
94
|
+
*/
|
|
95
|
+
async resolveAll(symbols) {
|
|
96
|
+
return Promise.all(symbols.map((s) => this.resolve(s)));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Clear the in-memory cache. Useful in tests, or after a vault change
|
|
100
|
+
* has moved a referenced file.
|
|
101
|
+
*/
|
|
102
|
+
clearCache() {
|
|
103
|
+
this.cache.clear();
|
|
104
|
+
}
|
|
105
|
+
// ---------------------------------------------------------------------------
|
|
106
|
+
// Internals
|
|
107
|
+
// ---------------------------------------------------------------------------
|
|
108
|
+
parseSymbol(symbol) {
|
|
109
|
+
const colonIdx = symbol.indexOf(':');
|
|
110
|
+
if (colonIdx <= 0) {
|
|
111
|
+
throw new Error(`ReferencedByResolver: malformed symbol "${symbol}" — expected "<kind>:<name>"`);
|
|
112
|
+
}
|
|
113
|
+
const kind = symbol.slice(0, colonIdx);
|
|
114
|
+
const name = symbol.slice(colonIdx + 1);
|
|
115
|
+
if (!name) {
|
|
116
|
+
throw new Error(`ReferencedByResolver: empty name in symbol "${symbol}"`);
|
|
117
|
+
}
|
|
118
|
+
if (kind !== 'skill' && kind !== 'service') {
|
|
119
|
+
throw new Error(`ReferencedByResolver: unknown kind "${kind}" in symbol "${symbol}" — expected "skill" or "service"`);
|
|
120
|
+
}
|
|
121
|
+
return { kind, name };
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Locate a file matching `<name>/<fileSuffix>` (skill) or `<name><fileSuffix>`
|
|
125
|
+
* (service) inside a search directory. Returns absolute path or null.
|
|
126
|
+
*
|
|
127
|
+
* For skills: the name IS a directory name → look for `<dir>/<name>/execute.sh`.
|
|
128
|
+
* For services: the name is a basename → recurse for `<name>.service.ts`.
|
|
129
|
+
*/
|
|
130
|
+
async findInDir(dir, name, suffix, kind) {
|
|
131
|
+
if (kind === 'skill') {
|
|
132
|
+
const candidate = path.join(dir, name, suffix);
|
|
133
|
+
return existsSync(candidate) ? candidate : null;
|
|
134
|
+
}
|
|
135
|
+
// Service: recurse one level looking for `<name>.service.ts`.
|
|
136
|
+
if (!existsSync(dir)) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
const wantedFile = `${name}${suffix}`;
|
|
140
|
+
const stack = [dir];
|
|
141
|
+
while (stack.length > 0) {
|
|
142
|
+
const current = stack.pop();
|
|
143
|
+
const entries = await fs.readdir(current, { withFileTypes: true });
|
|
144
|
+
for (const entry of entries) {
|
|
145
|
+
const full = path.join(current, entry.name);
|
|
146
|
+
if (entry.isDirectory()) {
|
|
147
|
+
// Skip test/build artifacts to keep the scan bounded.
|
|
148
|
+
if (entry.name === 'node_modules' || entry.name === 'dist' || entry.name.startsWith('.')) {
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
stack.push(full);
|
|
152
|
+
}
|
|
153
|
+
else if (entry.isFile() && entry.name === wantedFile) {
|
|
154
|
+
return full;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* The path we'd expect a missing symbol to live at — used so lint can
|
|
162
|
+
* tell the user where to create the file.
|
|
163
|
+
*/
|
|
164
|
+
fallbackCanonicalPath(kind, name) {
|
|
165
|
+
if (kind === 'skill') {
|
|
166
|
+
return path.join(this.crewlyRoot, 'config/skills/agent/core', name, 'execute.sh');
|
|
167
|
+
}
|
|
168
|
+
// Convention: `service:foo.service` → dir `foo`, file `foo.service.ts`.
|
|
169
|
+
// Fall back to using the full name as the dir if no `.service` suffix.
|
|
170
|
+
const areaDir = name.endsWith('.service') ? name.slice(0, -'.service'.length) : name;
|
|
171
|
+
return path.join(this.crewlyRoot, 'backend/src/services', areaDir, `${name}.ts`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=referenced-by.resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"referenced-by.resolver.js","sourceRoot":"","sources":["../../../../../../backend/src/services/wiki/referenced-by.resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SCHEMA.md loader + validator + frozen-path gate.
|
|
3
|
+
*
|
|
4
|
+
* Reads `<vault>/SCHEMA.md` (pure YAML inside a .md container), validates
|
|
5
|
+
* shape against `VaultSchema`, and exposes the frozen-path predicate used
|
|
6
|
+
* by `wiki-lint` to refuse restructure operations on OSS-pinned folders.
|
|
7
|
+
*
|
|
8
|
+
* Per v2.1 spec §2 (Hybrid folder architecture) — the `frozen: true` block
|
|
9
|
+
* is a HARD contract: any lint or ingest operation that targets a frozen
|
|
10
|
+
* path MUST fail closed.
|
|
11
|
+
*
|
|
12
|
+
* @module services/wiki/schema-loader.service
|
|
13
|
+
*/
|
|
14
|
+
import { VaultSchema } from './wiki.types.js';
|
|
15
|
+
/** Standard schema filename inside any vault root. */
|
|
16
|
+
export declare const SCHEMA_FILENAME = "SCHEMA.md";
|
|
17
|
+
/**
|
|
18
|
+
* Loads + validates a vault's SCHEMA.md. Stateless — instantiate once
|
|
19
|
+
* per service or use the static helper.
|
|
20
|
+
*/
|
|
21
|
+
export declare class SchemaLoaderService {
|
|
22
|
+
/**
|
|
23
|
+
* Load and validate the SCHEMA.md inside a vault directory.
|
|
24
|
+
*
|
|
25
|
+
* @param vaultPath - Absolute path to the vault root (the directory
|
|
26
|
+
* containing SCHEMA.md). Must be absolute.
|
|
27
|
+
* @returns Validated VaultSchema.
|
|
28
|
+
* @throws If vaultPath is not absolute, SCHEMA.md is missing, YAML
|
|
29
|
+
* parsing fails, or the parsed object is shape-invalid.
|
|
30
|
+
*/
|
|
31
|
+
load(vaultPath: string): Promise<VaultSchema>;
|
|
32
|
+
/**
|
|
33
|
+
* Determine whether a path inside a vault is frozen (OSS-pinned).
|
|
34
|
+
*
|
|
35
|
+
* Used by `wiki-lint` and `wiki-ingest` to refuse restructure / write
|
|
36
|
+
* operations. Comparison is by leading path segment — e.g. `sop/foo.md`
|
|
37
|
+
* is frozen if `sop/` is declared frozen.
|
|
38
|
+
*
|
|
39
|
+
* @param schema - The vault's parsed schema.
|
|
40
|
+
* @param relativePath - Path relative to vault root, e.g. `sop/team-1.md`.
|
|
41
|
+
* @returns true if the path lives under a frozen folder.
|
|
42
|
+
*/
|
|
43
|
+
isFrozenPath(schema: VaultSchema, relativePath: string): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Return every frozen folder path declared in a schema. Convenience for
|
|
46
|
+
* lint reports.
|
|
47
|
+
*/
|
|
48
|
+
getFrozenPaths(schema: VaultSchema): string[];
|
|
49
|
+
private validate;
|
|
50
|
+
private requireScope;
|
|
51
|
+
private requireString;
|
|
52
|
+
private requireHardcoded;
|
|
53
|
+
private requireLlmCurated;
|
|
54
|
+
private requireWritePolicy;
|
|
55
|
+
private requireStringArray;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=schema-loader.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-loader.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/wiki/schema-loader.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,EAAE,WAAW,EAAc,MAAM,iBAAiB,CAAC;AAE1D,sDAAsD;AACtD,eAAO,MAAM,eAAe,cAAc,CAAC;AAE3C;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B;;;;;;;;OAQG;IACG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA0BnD;;;;;;;;;;OAUG;IACH,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;IAShE;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE;IAQ7C,OAAO,CAAC,QAAQ;IAehB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,gBAAgB;IA2CxB,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,kBAAkB;CAW3B"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SCHEMA.md loader + validator + frozen-path gate.
|
|
3
|
+
*
|
|
4
|
+
* Reads `<vault>/SCHEMA.md` (pure YAML inside a .md container), validates
|
|
5
|
+
* shape against `VaultSchema`, and exposes the frozen-path predicate used
|
|
6
|
+
* by `wiki-lint` to refuse restructure operations on OSS-pinned folders.
|
|
7
|
+
*
|
|
8
|
+
* Per v2.1 spec §2 (Hybrid folder architecture) — the `frozen: true` block
|
|
9
|
+
* is a HARD contract: any lint or ingest operation that targets a frozen
|
|
10
|
+
* path MUST fail closed.
|
|
11
|
+
*
|
|
12
|
+
* @module services/wiki/schema-loader.service
|
|
13
|
+
*/
|
|
14
|
+
import * as path from 'path';
|
|
15
|
+
import * as fs from 'fs/promises';
|
|
16
|
+
import { parse as parseYAML } from 'yaml';
|
|
17
|
+
/** Standard schema filename inside any vault root. */
|
|
18
|
+
export const SCHEMA_FILENAME = 'SCHEMA.md';
|
|
19
|
+
/**
|
|
20
|
+
* Loads + validates a vault's SCHEMA.md. Stateless — instantiate once
|
|
21
|
+
* per service or use the static helper.
|
|
22
|
+
*/
|
|
23
|
+
export class SchemaLoaderService {
|
|
24
|
+
/**
|
|
25
|
+
* Load and validate the SCHEMA.md inside a vault directory.
|
|
26
|
+
*
|
|
27
|
+
* @param vaultPath - Absolute path to the vault root (the directory
|
|
28
|
+
* containing SCHEMA.md). Must be absolute.
|
|
29
|
+
* @returns Validated VaultSchema.
|
|
30
|
+
* @throws If vaultPath is not absolute, SCHEMA.md is missing, YAML
|
|
31
|
+
* parsing fails, or the parsed object is shape-invalid.
|
|
32
|
+
*/
|
|
33
|
+
async load(vaultPath) {
|
|
34
|
+
if (!path.isAbsolute(vaultPath)) {
|
|
35
|
+
throw new Error(`SchemaLoader: vaultPath must be absolute, got "${vaultPath}"`);
|
|
36
|
+
}
|
|
37
|
+
const schemaPath = path.join(vaultPath, SCHEMA_FILENAME);
|
|
38
|
+
let raw;
|
|
39
|
+
try {
|
|
40
|
+
raw = await fs.readFile(schemaPath, 'utf8');
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
throw new Error(`SchemaLoader: SCHEMA.md not found at ${schemaPath} (${err.message})`);
|
|
44
|
+
}
|
|
45
|
+
let parsed;
|
|
46
|
+
try {
|
|
47
|
+
parsed = parseYAML(raw);
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
throw new Error(`SchemaLoader: invalid YAML in ${schemaPath}: ${err.message}`);
|
|
51
|
+
}
|
|
52
|
+
return this.validate(parsed, schemaPath);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Determine whether a path inside a vault is frozen (OSS-pinned).
|
|
56
|
+
*
|
|
57
|
+
* Used by `wiki-lint` and `wiki-ingest` to refuse restructure / write
|
|
58
|
+
* operations. Comparison is by leading path segment — e.g. `sop/foo.md`
|
|
59
|
+
* is frozen if `sop/` is declared frozen.
|
|
60
|
+
*
|
|
61
|
+
* @param schema - The vault's parsed schema.
|
|
62
|
+
* @param relativePath - Path relative to vault root, e.g. `sop/team-1.md`.
|
|
63
|
+
* @returns true if the path lives under a frozen folder.
|
|
64
|
+
*/
|
|
65
|
+
isFrozenPath(schema, relativePath) {
|
|
66
|
+
const normalized = relativePath.replace(/^[/\\]+/, '');
|
|
67
|
+
return schema.hardcoded.some((folder) => {
|
|
68
|
+
// Match either exact folder or anything beneath it.
|
|
69
|
+
const folderName = folder.path.replace(/[/\\]+$/, '');
|
|
70
|
+
return normalized === folderName || normalized.startsWith(`${folderName}/`);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Return every frozen folder path declared in a schema. Convenience for
|
|
75
|
+
* lint reports.
|
|
76
|
+
*/
|
|
77
|
+
getFrozenPaths(schema) {
|
|
78
|
+
return schema.hardcoded.map((f) => f.path);
|
|
79
|
+
}
|
|
80
|
+
// ---------------------------------------------------------------------------
|
|
81
|
+
// Validation
|
|
82
|
+
// ---------------------------------------------------------------------------
|
|
83
|
+
validate(parsed, source) {
|
|
84
|
+
if (typeof parsed !== 'object' || parsed === null) {
|
|
85
|
+
throw new Error(`SchemaLoader: ${source} did not parse to an object`);
|
|
86
|
+
}
|
|
87
|
+
const p = parsed;
|
|
88
|
+
const vault_scope = this.requireScope(p.vault_scope, source);
|
|
89
|
+
const vault_id = this.requireString(p.vault_id, 'vault_id', source);
|
|
90
|
+
const hardcoded = this.requireHardcoded(p.hardcoded, source);
|
|
91
|
+
const llm_curated = this.requireLlmCurated(p.llm_curated, source);
|
|
92
|
+
const write_policy = this.requireWritePolicy(p.write_policy, source);
|
|
93
|
+
return { vault_scope, vault_id, hardcoded, llm_curated, write_policy };
|
|
94
|
+
}
|
|
95
|
+
requireScope(raw, source) {
|
|
96
|
+
if (raw !== 'team' && raw !== 'project' && raw !== 'global') {
|
|
97
|
+
throw new Error(`SchemaLoader: ${source} has invalid vault_scope "${raw}" — expected "team" | "project" | "global"`);
|
|
98
|
+
}
|
|
99
|
+
return raw;
|
|
100
|
+
}
|
|
101
|
+
requireString(raw, field, source) {
|
|
102
|
+
if (typeof raw !== 'string' || raw.length === 0) {
|
|
103
|
+
throw new Error(`SchemaLoader: ${source} missing or empty "${field}"`);
|
|
104
|
+
}
|
|
105
|
+
return raw;
|
|
106
|
+
}
|
|
107
|
+
requireHardcoded(raw, source) {
|
|
108
|
+
if (!Array.isArray(raw)) {
|
|
109
|
+
throw new Error(`SchemaLoader: ${source} "hardcoded" must be an array`);
|
|
110
|
+
}
|
|
111
|
+
return raw.map((entry, idx) => {
|
|
112
|
+
if (typeof entry !== 'object' || entry === null) {
|
|
113
|
+
throw new Error(`SchemaLoader: ${source} hardcoded[${idx}] is not an object`);
|
|
114
|
+
}
|
|
115
|
+
const e = entry;
|
|
116
|
+
const path = this.requireString(e.path, `hardcoded[${idx}].path`, source);
|
|
117
|
+
if (e.frozen !== true) {
|
|
118
|
+
throw new Error(`SchemaLoader: ${source} hardcoded[${idx}] must have frozen: true (got ${JSON.stringify(e.frozen)})`);
|
|
119
|
+
}
|
|
120
|
+
const description = this.requireString(e.description, `hardcoded[${idx}].description`, source);
|
|
121
|
+
const refs = this.requireStringArray(e.referenced_by, `hardcoded[${idx}].referenced_by`, source);
|
|
122
|
+
// Each ref must look like `<kind>:<name>` — validated lightly here so
|
|
123
|
+
// a malformed registry doesn't reach the resolver.
|
|
124
|
+
refs.forEach((ref, refIdx) => {
|
|
125
|
+
if (!/^(skill|service):.+$/.test(ref)) {
|
|
126
|
+
throw new Error(`SchemaLoader: ${source} hardcoded[${idx}].referenced_by[${refIdx}] must match "skill:<name>" or "service:<name>" (got "${ref}")`);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
return {
|
|
130
|
+
path,
|
|
131
|
+
frozen: true,
|
|
132
|
+
description,
|
|
133
|
+
referenced_by: refs,
|
|
134
|
+
};
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
requireLlmCurated(raw, source) {
|
|
138
|
+
if (!Array.isArray(raw)) {
|
|
139
|
+
throw new Error(`SchemaLoader: ${source} "llm_curated" must be an array`);
|
|
140
|
+
}
|
|
141
|
+
return raw.map((entry, idx) => {
|
|
142
|
+
if (typeof entry !== 'object' || entry === null) {
|
|
143
|
+
throw new Error(`SchemaLoader: ${source} llm_curated[${idx}] is not an object`);
|
|
144
|
+
}
|
|
145
|
+
const e = entry;
|
|
146
|
+
const path = this.requireString(e.path, `llm_curated[${idx}].path`, source);
|
|
147
|
+
if (e.frozen !== false) {
|
|
148
|
+
throw new Error(`SchemaLoader: ${source} llm_curated[${idx}] must have frozen: false (got ${JSON.stringify(e.frozen)})`);
|
|
149
|
+
}
|
|
150
|
+
const seed_subdirs = this.requireStringArray(e.seed_subdirs, `llm_curated[${idx}].seed_subdirs`, source);
|
|
151
|
+
return {
|
|
152
|
+
path,
|
|
153
|
+
frozen: false,
|
|
154
|
+
seed_subdirs,
|
|
155
|
+
llm_can_create_subdirs: Boolean(e.llm_can_create_subdirs),
|
|
156
|
+
lint_may_restructure: Boolean(e.lint_may_restructure),
|
|
157
|
+
};
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
requireWritePolicy(raw, source) {
|
|
161
|
+
if (typeof raw !== 'object' || raw === null) {
|
|
162
|
+
throw new Error(`SchemaLoader: ${source} "write_policy" must be an object`);
|
|
163
|
+
}
|
|
164
|
+
const w = raw;
|
|
165
|
+
return {
|
|
166
|
+
canonical: this.requireStringArray(w.canonical, 'write_policy.canonical', source),
|
|
167
|
+
proposed_only: this.requireStringArray(w.proposed_only, 'write_policy.proposed_only', source),
|
|
168
|
+
schema_writer: this.requireStringArray(w.schema_writer, 'write_policy.schema_writer', source),
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
requireStringArray(raw, field, source) {
|
|
172
|
+
if (!Array.isArray(raw)) {
|
|
173
|
+
throw new Error(`SchemaLoader: ${source} "${field}" must be an array`);
|
|
174
|
+
}
|
|
175
|
+
raw.forEach((item, idx) => {
|
|
176
|
+
if (typeof item !== 'string' || item.length === 0) {
|
|
177
|
+
throw new Error(`SchemaLoader: ${source} "${field}[${idx}]" must be a non-empty string`);
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
return raw;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=schema-loader.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-loader.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/wiki/schema-loader.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WikiBookkeepTriggerService — periodic vault scan that fires a
|
|
3
|
+
* notification to ORC when bookkeeping is due.
|
|
4
|
+
*
|
|
5
|
+
* Per Steve's 2026-05-22 design point #5: "还要时不时让 agent 针对自己的
|
|
6
|
+
* vault 进行 bookkeeping (可以根据存入的 md 数量来 trigger), 譬如过去
|
|
7
|
+
* N 天超过 X 个 md, 然后总结一下."
|
|
8
|
+
*
|
|
9
|
+
* Mechanism:
|
|
10
|
+
* - every `intervalMs` (default 30 min) tick
|
|
11
|
+
* - discover known vaults (project + team + global) by walking known
|
|
12
|
+
* filesystem roots for SCHEMA.md
|
|
13
|
+
* - call `WikiBookkeepService.generate` for each
|
|
14
|
+
* - if `report.shouldFire`, invoke the caller-injected `fireFn` (in
|
|
15
|
+
* production: enqueue a `[BOOKKEEP] vault=…` message to ORC)
|
|
16
|
+
* - debounce per-vault so we don't spam — only refire after
|
|
17
|
+
* `debounceMs` (default 6 h)
|
|
18
|
+
*
|
|
19
|
+
* The service intentionally does NOT do the consolidation itself — it
|
|
20
|
+
* notifies the agent, which then runs `wiki-bookkeep` + `wiki-ingest`
|
|
21
|
+
* (per the orchestrator system prompt rule).
|
|
22
|
+
*
|
|
23
|
+
* @module services/wiki/wiki-bookkeep-trigger.service
|
|
24
|
+
*/
|
|
25
|
+
import { WikiBookkeepService, WikiBookkeepReport } from './wiki-bookkeep.service.js';
|
|
26
|
+
export type WikiBookkeepFireFn = (vaultPath: string, report: WikiBookkeepReport) => Promise<void> | void;
|
|
27
|
+
export interface WikiBookkeepTriggerOptions {
|
|
28
|
+
/** Interval between scans, ms. Default 30 minutes. */
|
|
29
|
+
intervalMs?: number;
|
|
30
|
+
/** Minimum gap between fires for the same vault, ms. Default 6 hours. */
|
|
31
|
+
debounceMs?: number;
|
|
32
|
+
/** Caller-injected notifier. Production wires this to enqueue a message to ORC. */
|
|
33
|
+
fireFn: WikiBookkeepFireFn;
|
|
34
|
+
/** Optional override of the discovery roots (tests). */
|
|
35
|
+
discoverRoots?: () => Promise<string[]>;
|
|
36
|
+
/** Optional override of the bookkeep service (tests). */
|
|
37
|
+
bookkeepService?: WikiBookkeepService;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Discover absolute vault paths by walking the well-known Crewly roots:
|
|
41
|
+
* - `<env CREWLY_PROJECT_VAULT_PATH>` (single explicit override)
|
|
42
|
+
* - `<process.cwd>/.crewly/wiki` (current project vault)
|
|
43
|
+
* - `~/.crewly/teams/<uuid>/wiki` (every team vault)
|
|
44
|
+
* - `~/.crewly/global-wiki` (ORC cross-project vault, if present)
|
|
45
|
+
*
|
|
46
|
+
* A path is only included if `SCHEMA.md` exists inside it.
|
|
47
|
+
*/
|
|
48
|
+
export declare function discoverWikiVaults(): Promise<string[]>;
|
|
49
|
+
/**
|
|
50
|
+
* Periodic vault-bookkeep trigger. Start at boot, stop at shutdown.
|
|
51
|
+
*/
|
|
52
|
+
export declare class WikiBookkeepTriggerService {
|
|
53
|
+
private static instance;
|
|
54
|
+
private readonly logger;
|
|
55
|
+
private readonly intervalMs;
|
|
56
|
+
private readonly debounceMs;
|
|
57
|
+
private readonly fireFn;
|
|
58
|
+
private readonly discoverRoots;
|
|
59
|
+
private readonly bookkeepService;
|
|
60
|
+
private timer;
|
|
61
|
+
/** vaultPath → last fired timestamp (ms). */
|
|
62
|
+
private readonly lastFiredAt;
|
|
63
|
+
/** Per-vault locks so two overlapping ticks don't double-fire. */
|
|
64
|
+
private inflight;
|
|
65
|
+
constructor(opts: WikiBookkeepTriggerOptions);
|
|
66
|
+
static getInstance(): WikiBookkeepTriggerService | null;
|
|
67
|
+
/** Wire the production singleton. Pass null to detach (tests / shutdown). */
|
|
68
|
+
static setInstance(next: WikiBookkeepTriggerService | null): void;
|
|
69
|
+
/** Begin scanning. Idempotent. */
|
|
70
|
+
start(): void;
|
|
71
|
+
/** Stop scanning. Safe to call multiple times. */
|
|
72
|
+
stop(): void;
|
|
73
|
+
/**
|
|
74
|
+
* Run one scan pass. Public for test + the manual
|
|
75
|
+
* `/api/wiki/bookkeep/trigger-now` endpoint.
|
|
76
|
+
*/
|
|
77
|
+
tick(): Promise<{
|
|
78
|
+
scanned: string[];
|
|
79
|
+
fired: string[];
|
|
80
|
+
skippedByDebounce: string[];
|
|
81
|
+
quietVaults: string[];
|
|
82
|
+
}>;
|
|
83
|
+
/** Test affordance: clear the debounce ledger. */
|
|
84
|
+
_resetDebounceForTesting(): void;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=wiki-bookkeep-trigger.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wiki-bookkeep-trigger.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/wiki/wiki-bookkeep-trigger.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAOH,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErF,MAAM,MAAM,kBAAkB,GAAG,CAC/B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,kBAAkB,KACvB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE1B,MAAM,WAAW,0BAA0B;IACzC,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,MAAM,EAAE,kBAAkB,CAAC;IAC3B,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,yDAAyD;IACzD,eAAe,CAAC,EAAE,mBAAmB,CAAC;CACvC;AAKD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CA4B5D;AAED;;GAEG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA2C;IAClE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0B;IACxD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsB;IACtD,OAAO,CAAC,KAAK,CAA+B;IAC5C,6CAA6C;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IACzD,kEAAkE;IAClE,OAAO,CAAC,QAAQ,CAAqB;gBAEzB,IAAI,EAAE,0BAA0B;IAS5C,MAAM,CAAC,WAAW,IAAI,0BAA0B,GAAG,IAAI;IAIvD,6EAA6E;IAC7E,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,0BAA0B,GAAG,IAAI,GAAG,IAAI;IAKjE,kCAAkC;IAClC,KAAK,IAAI,IAAI;IAWb,kDAAkD;IAClD,IAAI,IAAI,IAAI;IAQZ;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;IAoDF,kDAAkD;IAClD,wBAAwB,IAAI,IAAI;CAGjC"}
|