fuli-context 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +178 -0
  3. package/compose.graphiti.yml +86 -0
  4. package/dist/web/assets/ConnectionsPage-CY6H_mJJ.js +1 -0
  5. package/dist/web/assets/KnowledgeInspector-BSpz5Sfm.js +1 -0
  6. package/dist/web/assets/KnowledgeInspector-CHbB_0rC.css +1 -0
  7. package/dist/web/assets/KnowledgeOrganizerPage-BlEvhPrv.css +1 -0
  8. package/dist/web/assets/KnowledgeOrganizerPage-CvjGPlUc.js +1 -0
  9. package/dist/web/assets/KnowledgePage-Khuo3cNs.js +1 -0
  10. package/dist/web/assets/KnowledgeWorkspace-DVZusvem.js +4 -0
  11. package/dist/web/assets/OverviewPage-DC4C4Fhn.js +1 -0
  12. package/dist/web/assets/PersonalProfilePage-CSV9Mtgz.js +1 -0
  13. package/dist/web/assets/PersonalProfilePage-CVJ3TcRi.css +1 -0
  14. package/dist/web/assets/PersonalProjectsPage-A50EaseQ.js +1 -0
  15. package/dist/web/assets/PublicProjectsPage-BAdO_bae.js +1 -0
  16. package/dist/web/assets/ReviewPage-Dztk2jDG.js +1 -0
  17. package/dist/web/assets/console-tbvTUi6p.js +1 -0
  18. package/dist/web/assets/fuli-logo-DGuyqchQ.png +0 -0
  19. package/dist/web/assets/identity-B3s5CXhv.js +1 -0
  20. package/dist/web/assets/index-Devf7glZ.css +1 -0
  21. package/dist/web/assets/index-DwUDhQKc.js +6 -0
  22. package/dist/web/assets/model-DVT8sjy9.js +1 -0
  23. package/dist/web/assets/paths-B790iniO.js +1 -0
  24. package/dist/web/assets/runtime-dom.esm-bundler-DttsK21F.js +1 -0
  25. package/dist/web/assets/vue-router-BYTAoWT3.js +1 -0
  26. package/dist/web/index.html +22 -0
  27. package/graph-provider/Dockerfile +16 -0
  28. package/graph-provider/fuli_graph/__init__.py +5 -0
  29. package/graph-provider/fuli_graph/app.py +547 -0
  30. package/graph-provider/fuli_graph/auth.py +17 -0
  31. package/graph-provider/fuli_graph/collaboration_context.py +290 -0
  32. package/graph-provider/fuli_graph/config.py +34 -0
  33. package/graph-provider/fuli_graph/graph_models.py +123 -0
  34. package/graph-provider/fuli_graph/graph_projection.py +405 -0
  35. package/graph-provider/fuli_graph/graph_query.py +561 -0
  36. package/graph-provider/fuli_graph/knowledge_audit.py +765 -0
  37. package/graph-provider/fuli_graph/knowledge_batch_confirmation.py +246 -0
  38. package/graph-provider/fuli_graph/knowledge_management.py +816 -0
  39. package/graph-provider/fuli_graph/knowledge_records.py +65 -0
  40. package/graph-provider/fuli_graph/knowledge_search.py +723 -0
  41. package/graph-provider/fuli_graph/knowledge_usage_models.py +52 -0
  42. package/graph-provider/fuli_graph/model_validation.py +58 -0
  43. package/graph-provider/fuli_graph/models.py +1179 -0
  44. package/graph-provider/fuli_graph/personal_project_access.py +29 -0
  45. package/graph-provider/fuli_graph/preference_conflicts.py +420 -0
  46. package/graph-provider/fuli_graph/project_action_models.py +142 -0
  47. package/graph-provider/fuli_graph/project_knowledge.py +707 -0
  48. package/graph-provider/fuli_graph/project_management.py +251 -0
  49. package/graph-provider/fuli_graph/provider_values.py +40 -0
  50. package/graph-provider/fuli_graph/runtime.py +350 -0
  51. package/graph-provider/fuli_graph/search_projection.py +156 -0
  52. package/graph-provider/fuli_graph/store.py +24 -0
  53. package/graph-provider/fuli_graph/store_identity.py +237 -0
  54. package/graph-provider/fuli_graph/store_knowledge.py +447 -0
  55. package/graph-provider/fuli_graph/store_projects.py +242 -0
  56. package/graph-provider/fuli_graph/store_publication.py +370 -0
  57. package/graph-provider/fuli_graph/store_records.py +134 -0
  58. package/graph-provider/pyproject.toml +35 -0
  59. package/npm-shrinkwrap.json +6045 -0
  60. package/package.json +99 -0
  61. package/skills/capturing-session-knowledge/SKILL.md +226 -0
  62. package/skills/capturing-session-knowledge/agents/openai.yaml +13 -0
  63. package/skills/grilling-project/SKILL.md +129 -0
  64. package/skills/grilling-project/agents/openai.yaml +4 -0
  65. package/skills/grilling-project/references/project-profile.md +105 -0
  66. package/src/agent/candidate-read-service.js +53 -0
  67. package/src/agent/context-pack-service.js +83 -0
  68. package/src/agent/public-read-policy.js +39 -0
  69. package/src/agent/public-read-service.js +69 -0
  70. package/src/agent/read-projection.js +107 -0
  71. package/src/agent/search-service.js +61 -0
  72. package/src/agent/space-boundary.js +33 -0
  73. package/src/agent-tools/graph-definitions.js +479 -0
  74. package/src/agent-tools/graph-handlers.js +96 -0
  75. package/src/agent-tools/schema.js +37 -0
  76. package/src/agent-tools.js +16 -0
  77. package/src/app/application-error.js +13 -0
  78. package/src/app/bootstrap.js +8 -0
  79. package/src/app/create-application.js +143 -0
  80. package/src/app/state-service.js +38 -0
  81. package/src/candidates.js +78 -0
  82. package/src/classifier.js +63 -0
  83. package/src/cli/command-arguments.js +14 -0
  84. package/src/cli/command-registry.js +78 -0
  85. package/src/cli/commands/candidates.js +17 -0
  86. package/src/cli/commands/ingestion.js +32 -0
  87. package/src/cli/commands/reads.js +50 -0
  88. package/src/cli/commands/spaces.js +20 -0
  89. package/src/cli/invocation.js +47 -0
  90. package/src/cli/local-runtime-command.js +94 -0
  91. package/src/cli/local-runtime-options.js +64 -0
  92. package/src/cli/migrate-command.js +71 -0
  93. package/src/cli/migration-destination.js +117 -0
  94. package/src/cli/setup-agent-selection.js +195 -0
  95. package/src/cli/setup-command.js +85 -0
  96. package/src/cli/uninstall-command.js +67 -0
  97. package/src/cli.js +90 -0
  98. package/src/context-pack.js +206 -0
  99. package/src/defaults.js +1 -0
  100. package/src/extractor.js +77 -0
  101. package/src/fact-history.js +39 -0
  102. package/src/facts/fact-service.js +89 -0
  103. package/src/graphiti/agent-access-policy.js +88 -0
  104. package/src/graphiti/capture-policy.js +84 -0
  105. package/src/graphiti/federated-application.js +1292 -0
  106. package/src/graphiti/personal-context.js +29 -0
  107. package/src/graphiti/project-path-context.js +159 -0
  108. package/src/graphiti/provider-client.js +288 -0
  109. package/src/graphiti/runtime-config.js +85 -0
  110. package/src/graphiti/setup.js +43 -0
  111. package/src/graphiti/source-marker.js +142 -0
  112. package/src/http/api-router.js +133 -0
  113. package/src/http/bounded-json-array.js +19 -0
  114. package/src/http/error-mapping.js +36 -0
  115. package/src/http/graph-api-router.js +257 -0
  116. package/src/http/lens-route.js +50 -0
  117. package/src/http/request-policy.js +41 -0
  118. package/src/http/response.js +29 -0
  119. package/src/http/static-handler.js +55 -0
  120. package/src/ingestion.js +161 -0
  121. package/src/lens/lens-correction-service.js +81 -0
  122. package/src/lens/lens-fact-writer.js +85 -0
  123. package/src/lens/lens-input.js +62 -0
  124. package/src/lens/lens-query-projection.js +87 -0
  125. package/src/lens/lens-query-ranking.js +62 -0
  126. package/src/lens/lens-query.js +143 -0
  127. package/src/lens/lens-resource-projection.js +93 -0
  128. package/src/lens/lens-resource-selection.js +45 -0
  129. package/src/lens/lens-resource-service.js +103 -0
  130. package/src/lens/lens-search-query.js +122 -0
  131. package/src/lens/lens-service.js +183 -0
  132. package/src/local-runtime/lifecycle.js +254 -0
  133. package/src/mcp/create-mcp-server.js +85 -0
  134. package/src/mcp/instructions.js +10 -0
  135. package/src/mcp/project-action-preview-tokens.js +72 -0
  136. package/src/mcp/runtime.js +71 -0
  137. package/src/mcp/tool-annotations.js +63 -0
  138. package/src/mcp/tool-result.js +167 -0
  139. package/src/mcp/tool-schema.js +60 -0
  140. package/src/mcp-server.js +76 -0
  141. package/src/models.js +44 -0
  142. package/src/observer.js +83 -0
  143. package/src/package-metadata.js +6 -0
  144. package/src/project-rules.js +33 -0
  145. package/src/publication/canonical-json.js +39 -0
  146. package/src/publication/outbox-service.js +46 -0
  147. package/src/publication/publication-envelope-schema.js +75 -0
  148. package/src/publication/publication-envelope.js +37 -0
  149. package/src/publication/publication-policy.js +82 -0
  150. package/src/publication/publication-service.js +48 -0
  151. package/src/router.js +58 -0
  152. package/src/runtime-options.js +139 -0
  153. package/src/security/episode-visibility.js +14 -0
  154. package/src/security/fact-visibility.js +15 -0
  155. package/src/security/sensitive-content.js +18 -0
  156. package/src/security/source-metadata-policy.js +8 -0
  157. package/src/server/application-lifecycle.js +34 -0
  158. package/src/server/listen.js +24 -0
  159. package/src/server.js +135 -0
  160. package/src/setup/agent-installation-status.js +97 -0
  161. package/src/setup/agents.js +123 -0
  162. package/src/setup/codex-bootstrap.js +118 -0
  163. package/src/setup/codex-config.js +122 -0
  164. package/src/setup/config-backup.js +22 -0
  165. package/src/setup/container-runtime.js +388 -0
  166. package/src/setup/cursor-config.js +61 -0
  167. package/src/setup/graph-runtime.js +360 -0
  168. package/src/setup/node-runtime.js +24 -0
  169. package/src/setup/options.js +91 -0
  170. package/src/setup/paths.js +47 -0
  171. package/src/setup/session-skill.js +91 -0
  172. package/src/setup/setup.js +85 -0
  173. package/src/setup/uninstall.js +90 -0
  174. package/src/storage/episode-evidence-preview.js +100 -0
  175. package/src/storage/fact-search-order.js +18 -0
  176. package/src/storage/file/episode-evidence.js +37 -0
  177. package/src/storage/file/episode-index.js +59 -0
  178. package/src/storage/file/fact-search.js +60 -0
  179. package/src/storage/file-store.js +437 -0
  180. package/src/storage/import-json.js +70 -0
  181. package/src/storage/json-file.js +41 -0
  182. package/src/storage/legacy-record-validation.js +152 -0
  183. package/src/storage/legacy-snapshot-validation.js +32 -0
  184. package/src/storage/migrate.js +128 -0
  185. package/src/storage/migrations/001-initial.sql +83 -0
  186. package/src/storage/migrations/002-storage-integrity.sql +113 -0
  187. package/src/storage/record-validation.js +46 -0
  188. package/src/storage/snapshot-defaults.js +54 -0
  189. package/src/storage/sqlite/candidates-repository.js +84 -0
  190. package/src/storage/sqlite/episode-evidence-repository.js +154 -0
  191. package/src/storage/sqlite/episode-privacy-sql.js +33 -0
  192. package/src/storage/sqlite/episodes-repository.js +52 -0
  193. package/src/storage/sqlite/fact-search-repository.js +162 -0
  194. package/src/storage/sqlite/facts-repository.js +146 -0
  195. package/src/storage/sqlite/imports-repository.js +39 -0
  196. package/src/storage/sqlite/mapper.js +84 -0
  197. package/src/storage/sqlite/open-database.js +15 -0
  198. package/src/storage/sqlite/outbox-repository.js +103 -0
  199. package/src/storage/sqlite/snapshot-repository.js +69 -0
  200. package/src/storage/sqlite/spaces-repository.js +52 -0
  201. package/src/storage/sqlite/subscriptions-repository.js +54 -0
  202. package/src/storage/sqlite-store.js +159 -0
  203. package/src/storage/stable-json.js +24 -0
  204. package/src/storage/store-port.js +20 -0
  205. package/src/store.js +2 -0
  206. package/src/workspace-protocol/array-validation.js +19 -0
  207. package/src/workspace-protocol/base64url-contract.js +27 -0
  208. package/src/workspace-protocol/constants.js +37 -0
  209. package/src/workspace-protocol/error-contract.js +24 -0
  210. package/src/workspace-protocol/fact-contract.js +110 -0
  211. package/src/workspace-protocol/governance-contract.js +47 -0
  212. package/src/workspace-protocol/index.js +53 -0
  213. package/src/workspace-protocol/json-budget.js +19 -0
  214. package/src/workspace-protocol/manifest-contract.js +186 -0
  215. package/src/workspace-protocol/publication-contract.js +212 -0
  216. package/src/workspace-protocol/query-contract.js +149 -0
  217. package/src/workspace-protocol/scalar-contract.js +192 -0
  218. package/src/workspace-protocol/sync-contract.js +184 -0
  219. package/src/workspace-protocol/text-contract.js +39 -0
  220. package/src/workspace-protocol/validation.js +66 -0
@@ -0,0 +1 @@
1
+ var e=new Set([`ProjectSpace`,`PersonalSpace`,`PersonalProject`,`ProjectPurpose`,`ProjectScope`,`ProjectSource`,`ProjectBoundary`,`ProjectAssessment`,`AssessmentDimension`,`RelatedPersonalProject`]),t={ProjectSpace:`项目空间`,PersonalSpace:`个人空间`,PersonalProject:`项目档案`,ProjectPurpose:`项目目标`,ProjectScope:`项目范围`,TechnicalSummary:`技术说明`,ProjectSource:`资料来源`,ProjectBoundary:`项目边界`,ProjectAssessment:`档案评估`,AssessmentDimension:`评估维度`,RelatedPersonalProject:`关联项目`},n={known_known:`已知的已知`,known_unknown:`已知的未知`,unknown_known:`未知的已知`,unknown_unknown:`未知的未知`,unclassified:`待分类`},r={known_known:`被明确表达出来的知识或结论。`,known_unknown:`被明确提出、但仍在等待答案的问题。`,unknown_known:`从行为、案例、反馈或反应中提炼出的隐性知识。`,unknown_unknown:`在探索过程中发现、仍需判断的潜在盲点。`,unclassified:`旧内容还没有明确记录发现时所属象限。`},i={confirmed:`已确认`,agent_confirmed:`Agent 已确认`,pending:`待确认`},a={user:`用户`,agent:`Agent`,authoritative_source:`权威来源`,import:`导入记录`},o={taste:`品味`,personality:`个性`,judgment_preference:`判断偏好`},s={confirm:`确认`,update:`内容纠正`,invalidate:`标记失效`,link_replacement:`补充替代关联`,restore:`恢复有效`,scope_change:`调整生效范围`,batch_confirm:`批量确认`},c={none:`没有人工变更`,unseen:`人工改动 · Agent 未查看`,viewed:`Agent 已查看 · 待审核`,reviewed:`Agent 已审核`},l={human_change:`人工修改`,agent_view:`Agent 查看`,agent_review:`Agent 审核`,knowledge_used:`Agent 实际使用`};function u(e){return n[e??`unclassified`]??e??n.unclassified}function d(e){return r[e??`unclassified`]??`这是一个自定义认知阶段;请结合形成过程与来源判断。`}function f(e){return o[e??``]??e??``}function p(e){return s[e??``]??e??`修订`}function m(e){return c[e??`none`]}function h(e){return l[e??``]??e??`审计记录`}function g(e){return e?e.label||a[e.kind]||e.kind:`尚未记录`}function _(e){return typeof e==`object`&&e?e.id:e}function v(e){let t=e.nodes.filter(e=>!e.invalid_at),n=new Set(t.map(({id:e})=>e)),r=e.edges.filter(e=>!e.invalid_at&&n.has(_(e.source))&&n.has(_(e.target)));return{...e,nodes:t,edges:r}}function y(e){if(!e)return[];let t=new Map(e.nodes.map(e=>[e.id,e.name])),n=e.nodes.filter(e=>!E(e)).map(e=>x(e)),r=e.edges.filter(e=>!D(e)).map(e=>S(e,t));return[...n,...r].sort((e,t)=>q(t)-q(e))}function b(e){if(!e)return[];let t=new Map(e.nodes.map(e=>[e.id,e.name])),n=e.nodes.filter(E).map(e=>x(e)),r=e.edges.filter(D).map(e=>S(e,t));return[...n,...r]}function x(e){return{id:e.id,itemKind:`entity`,title:e.name,body:e.summary||`没有补充说明`,type:e.type,...W(e),raw:e}}function S(e,t){return{id:e.id,itemKind:`relationship`,title:`${t.get(_(e.source))??`未知实体`} → ${t.get(_(e.target))??`未知实体`}`,body:e.fact||`没有关系说明`,type:`关系 · ${e.type}`,...W(e),raw:e}}function C(t){return t?e.has(t.type)||O(t.id):!1}function w(e){return e.itemKind===`relationship`?`项目资料关系`:t[e.type]??e.type}function T(e){if(!e||e.itemKind!==`entity`)return null;let t=e.raw.attributes?.projectId;return typeof t==`string`&&t?t:null}function E(t){return e.has(t.type)||O(t.id)}function D(e){return O(e.id)}function O(e){return String(e).startsWith(`project-profile:`)||String(e).startsWith(`project-profile-edge:`)||String(e).startsWith(`space-edge:`)||String(e).startsWith(`personal-project-relation:`)}function k(e,t){let n=t.query?.trim().toLocaleLowerCase()??``;return e.filter(e=>t.type&&t.type!==`all`&&e.type!==t.type||t.quadrant&&t.quadrant!==`all`&&e.originQuadrant!==t.quadrant||t.profile===`profile`&&!e.profileAspect||t.profile===`regular`&&e.profileAspect||t.status===`current`&&e.invalidAt||t.status===`historical`&&!e.invalidAt||t.humanChange===`human_changed`&&!e.humanEdited||t.humanChange&&![`all`,`human_changed`].includes(t.humanChange)&&e.humanChangeStatus!==t.humanChange?!1:!n||K(e).toLocaleLowerCase().includes(n))}function A(e){let t=y(e).filter(({profileAspect:e})=>e),n=new Set(t.filter(({itemKind:e})=>e===`relationship`).flatMap(({raw:e})=>{let t=e;return[_(t.source),_(t.target)]}));return t.filter(({id:e,itemKind:t})=>t===`relationship`||!n.has(e))}function j(e){let t=e.filter(e=>!!e);return{...t[0]??{space_id:null},nodes:J(t.flatMap(e=>e.nodes)),edges:J(t.flatMap(e=>e.edges)),truncated:t.some(({truncated:e})=>e)}}function M(e){return e.revisions.at(0)?.created_at??e.createdAt??e.evidence.at(0)?.created_at??e.evidence.at(0)?.reference_time??null}function N(e){if(!e)return`未记录`;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(`zh-CN`)}function P(e){let t=e.confirmationBasis;return!e.confirmationExplicit||!t?.confirmed_by||!t.confirmed_at?`pending`:e.confirmationStatus===`confirmed`&&[`user`,`authoritative_source`].includes(t.confirmed_by.kind)?`confirmed`:e.confirmationStatus===`agent_confirmed`&&t.confirmed_by.kind===`agent`&&t.agent_policy_version?`agent_confirmed`:`pending`}function F(e){return i[P(e)]}function I(e){let t=new Map,n=e.filter(e=>!e.invalidAt&&e.classificationExplicit&&P(e)!==`confirmed`);for(let e of n)for(let n of e.evidence)n.id&&R(t,{kind:`source`,value:n.id,label:z(n),description:n.source_description||n.summary||`同一条来源记录`},e),n.session_id&&R(t,{kind:`session`,value:n.session_id,label:B(n),description:n.source_description||n.summary||`同一次来源会话`},e);return[...t.values()].filter(({items:e})=>e.length>=2).sort((e,t)=>t.items.length-e.items.length||e.label.localeCompare(t.label,`zh-CN`))}function L(e,t){let n=e.evidence.find(e=>t.kind===`source`?e.id===t.value:e.session_id===t.value),r=e.confirmationBasis;return{existenceReason:r?.existence_reason||n?.source_description||n?.summary||`该内容由来源“${t.label}”支持。`,quadrantReason:r?.quadrant_reason||e.reasoningSummary||`该内容在发现时符合“${u(e.originQuadrant)}”:${d(e.originQuadrant)}`,proposedBy:r?.proposed_by||V(n)}}function R(e,t,n){let r=`${t.kind}:${t.value}`,i=e.get(r)??{key:r,...t,items:[]},a=`${n.itemKind}:${n.id}`;i.items.some(e=>`${e.itemKind}:${e.id}`===a)||i.items.push(n),e.set(r,i)}function z(e){return e.name||e.source_description||e.summary||`来源记录`}function B(e){let t={codex:`Codex`,claude_code:`Claude Code`,cursor:`Cursor`,kiro:`Kiro`,other:`其他来源`}[e.source_application??``];return t?`${t} · ${e.name||e.source_kind||`会话`}`:e.name||e.source_kind||`来源会话`}function V(e){let t={codex:`Codex`,claude_code:`Claude Code`,cursor:`Cursor`,kiro:`Kiro`,other:`其他 Agent`}[e?.source_application??``];return t?{kind:`agent`,label:t}:{kind:`import`,label:`历史记录`}}function H(e){if(!e.classificationExplicit)return`这条旧内容没有显式记录发现时象限;保存前需要人工补充,系统不会自动归入“已知的已知”。`;let t=e.confirmationBasis;return P(e)===`confirmed`&&t?`${g(t.confirmed_by)}于 ${N(t.confirmed_at)} 确认;本次确认同时覆盖知识内容和象限归类。`:P(e)===`agent_confirmed`&&t?`这条内容因跨任务实际使用达到策略阈值,于 ${N(t.confirmed_at)} 标记为 Agent 已确认;它仍低于人工或权威来源确认。`:t?`${g(t.proposed_by)}提出了这条内容,当前仍等待确认;来源证据不会自动升级为确认。`:`旧数据没有结构化的确认人和确认时间,已统一列入“待确认”,不会继续显示为已确认。`}function U(e){let t=e.confirmationBasis;return t?P(e)===`confirmed`?`${g(t.confirmed_by)} · ${N(t.confirmed_at)}`:P(e)===`agent_confirmed`?`Agent 使用策略 · ${N(t.confirmed_at)}`:`${g(t.proposed_by)}提出 · ${t.existence_reason}`:`旧数据 · 确认人和时间缺失`}function W(e){let t=e.epistemic_state_explicit===!0,n=e.confirmation_state_explicit===!0;return{originQuadrant:t?e.origin_quadrant??`known_known`:`unclassified`,currentQuadrant:t?e.current_quadrant??`known_known`:`unclassified`,epistemicStatus:t?e.epistemic_status??`confirmed`:`unreviewed`,classificationExplicit:t,confirmationStatus:G(e.confirmation_status),confirmationExplicit:n,confirmationBasis:e.confirmation_basis??null,reasoningSummary:e.reasoning_summary??``,profileAspect:e.profile_aspect??null,preferenceScope:e.preference_scope??(e.profile_aspect?`global`:null),preferenceProjectId:e.preference_project_id??null,inheritanceMode:e.inheritance_mode??`local_only`,inheritedProjectIds:e.inherited_project_ids??[],humanEdited:e.human_edited===!0,humanChangeStatus:e.human_change_status??`none`,humanChangeVersion:e.human_change_version??0,lastHumanChangedAt:e.last_human_changed_at??null,lastAgentViewedAt:e.last_agent_viewed_at??null,lastAgentReviewedAt:e.last_agent_reviewed_at??null,utilityScore:e.utility_score??0,confidenceScore:e.confidence_score??.5,qualifiedUseCount:e.qualified_use_count??0,distinctTaskCount:e.distinct_task_count??0,lastUsedAt:e.last_used_at??null,usageGeneration:e.usage_generation??1,invalidAt:e.invalid_at,replacedByItemId:e.replaced_by_item_id??null,replacedByItemKind:e.replaced_by_item_kind??null,createdAt:e.created_at,evidence:e.evidence??[],revisions:e.revisions??[],assignments:e.assignments??[],projectReferences:e.project_references??[],conflicts:e.conflicts??[],auditEvents:e.audit_events??[]}}function G(e){return e===`confirmed`||e===`agent_confirmed`?e:`pending`}function K(e){return[e.id,e.title,e.body,e.type,u(e.originQuadrant),f(e.profileAspect),e.reasoningSummary,e.confirmationBasis?.existence_reason,e.confirmationBasis?.quadrant_reason,g(e.confirmationBasis?.proposed_by),g(e.confirmationBasis?.confirmed_by),m(e.humanChangeStatus),...e.auditEvents.flatMap(e=>[h(e.action),e.reason,e.tool_name,e.conflict_check,e.classification_check,e.outcome]),...e.evidence.flatMap(e=>[e.name,e.summary,e.source_description,e.session_id,e.source_excerpt])].filter(Boolean).join(` `)}function q(e){let t=M(e),n=t?new Date(t).getTime():0;return Number.isNaN(n)?0:n}function J(e){let t=new Map;for(let n of e){let e=t.get(n.id);t.set(n.id,e?Y(e,n):n)}return[...t.values()]}function Y(e,t){let n={...e,...t};for(let r of[`evidence`,`revisions`,`assignments`,`project_references`,`conflicts`,`audit_events`,`episodes`]){let i=e[r],a=t[r];!i&&!a||(n[r]=X([...i??[],...a??[]]))}return n}function X(e){let t=new Set;return e.filter(e=>{let n=typeof e==`object`&&e?e.id??JSON.stringify(e):e;return t.has(n)?!1:(t.add(n),!0)})}export{w as C,p as D,F as E,f as S,u as T,M as _,U as a,A as b,k as c,C as d,h as f,P as g,y as h,g as i,N as l,x as m,I as n,v as o,S as p,H as r,_ as s,L as t,m as u,b as v,d as w,T as x,j as y};
@@ -0,0 +1 @@
1
+ import{x as e}from"./console-tbvTUi6p.js";function t(e){return typeof e==`object`||`displayName`in e||`props`in e||`__vccOpts`in e}function n(e){return e.__esModule||e[Symbol.toStringTag]===`Module`||e.default&&t(e.default)}var r=Object.assign;function i(e,t){let n={};for(let r in t){let i=t[r];n[r]=o(i)?i.map(e):e(i)}return n}var a=()=>{},o=Array.isArray;function s(e,t){let n={};for(let r in e)n[r]=r in t?t[r]:e[r];return n}var c=Symbol(``);function l(e,t){return r(Error(),{type:e,[c]:!0},t)}function u(e,t){return e instanceof Error&&c in e&&(t==null||!!(e.type&t))}var d=Symbol(``),f=Symbol(``),p=Symbol(``),m=Symbol(``),h=Symbol(``);function g(){return e(p)}function _(t){return e(m)}function v(e){return encodeURIComponent(e)}function y(e,t=`graph`,n,r={}){return`${`/personal/${v(e)}/projects`}${n?`/${v(n)}`:``}/${t}${r.itemKind&&r.itemId?`/${r.itemKind}/${v(r.itemId)}`:``}`}function b(e,t,n=`directory`,r={}){return`${`/knowledge/${e}/${v(t)}`}${r.projectId?`/${v(r.projectId)}`:``}/${n}${r.itemKind&&r.itemId?`/${r.itemKind}/${v(r.itemId)}`:``}`}function x(e){let t={};for(let n of[`q`,`type`,`quadrant`,`profile`,`status`]){let r=e.get(n);r&&(t[n]=r)}let n=e.getAll(`context`).filter(Boolean).slice(0,12);return n.length&&(t.context=n),t}export{_,r as a,n as c,d,s as f,h as g,p as h,i,u as l,m,y as n,l as o,a as p,x as r,o as s,b as t,t as u,g as v,f as y};
@@ -0,0 +1 @@
1
+ import{$ as e,B as t,G as n,H as r,J as i,K as a,Q as o,R as s,S as c,U as l,V as u,W as d,X as f,Y as p,Z as ee,et as m,h as te,l as h,q as ne,z as g}from"./console-tbvTUi6p.js";var _=void 0,v=typeof window<`u`&&window.trustedTypes;if(v)try{_=v.createPolicy(`vue`,{createHTML:e=>e})}catch{}var y=_?e=>_.createHTML(e):e=>e,re=`http://www.w3.org/2000/svg`,ie=`http://www.w3.org/1998/Math/MathML`,b=typeof document<`u`?document:null,x=b&&b.createElement(`template`),S={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{let i=t===`svg`?b.createElementNS(re,e):t===`mathml`?b.createElementNS(ie,e):n?b.createElement(e,{is:n}):b.createElement(e);return e===`select`&&r&&r.multiple!=null&&i.setAttribute(`multiple`,r.multiple),i},createText:e=>b.createTextNode(e),createComment:e=>b.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>b.querySelector(e),setScopeId(e,t){e.setAttribute(t,``)},insertStaticContent(e,t,n,r,i,a){let o=n?n.previousSibling:t.lastChild;if(i&&(i===a||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),n),!(i===a||!(i=i.nextSibling)););else{x.innerHTML=y(r===`svg`?`<svg>${e}</svg>`:r===`mathml`?`<math>${e}</math>`:e);let i=x.content;if(r===`svg`||r===`mathml`){let e=i.firstChild;for(;e.firstChild;)i.appendChild(e.firstChild);i.removeChild(e)}t.insertBefore(i,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},C=Symbol(`_vtc`);function w(e,t,n){let r=e[C];r&&(t=(t?[t,...r]:[...r]).join(` `)),t==null?e.removeAttribute(`class`):n?e.setAttribute(`class`,t):e.className=t}var T=Symbol(`_vod`),ae=Symbol(`_vsh`),oe=Symbol(``),se=/(?:^|;)\s*display\s*:/;function ce(e,t,n){let r=e.style,i=f(n),a=!1;if(n&&!i){if(t)if(f(t))for(let e of t.split(`;`)){let t=e.slice(0,e.indexOf(`:`)).trim();n[t]??D(r,t,``)}else for(let e in t)n[e]??D(r,e,``);for(let i in n){i===`display`&&(a=!0);let o=n[i];o==null?D(r,i,``):ue(e,i,!f(t)&&t?t[i]:void 0,o)||D(r,i,o)}}else if(i){if(t!==n){let e=r[oe];e&&(n+=`;`+e),r.cssText=n,a=se.test(n)}}else t&&e.removeAttribute(`style`);T in e&&(e[T]=a?r.display:``,e[ae]&&(r.display=`none`))}var E=/\s*!important$/;function D(e,t,n){if(d(n))n.forEach(n=>D(e,t,n));else if(n??=``,t.startsWith(`--`))e.setProperty(t,n);else{let r=le(e,t);E.test(n)?e.setProperty(u(r),n.replace(E,``),`important`):e[r]=n}}var O=[`Webkit`,`Moz`,`ms`],k={};function le(e,t){let n=k[t];if(n)return n;let r=s(t);if(r!==`filter`&&r in e)return k[t]=r;r=g(r);for(let n=0;n<O.length;n++){let i=O[n]+r;if(i in e)return k[t]=i}return t}function ue(e,t,n,r){return e.tagName===`TEXTAREA`&&(t===`width`||t===`height`)&&f(r)&&n===r}var A=`http://www.w3.org/1999/xlink`;function j(e,t,n,i,a,o=p(t)){i&&t.startsWith(`xlink:`)?n==null?e.removeAttributeNS(A,t.slice(6,t.length)):e.setAttributeNS(A,t,n):n==null||o&&!r(n)?e.removeAttribute(t):e.setAttribute(t,o?``:ee(n)?String(n):n)}function M(e,t,n,i,a){if(t===`innerHTML`||t===`textContent`){n!=null&&(e[t]=t===`innerHTML`?y(n):n);return}let o=e.tagName;if(t===`value`&&o!==`PROGRESS`&&!o.includes(`-`)){let r=o===`OPTION`?e.getAttribute(`value`)||``:e.value,i=n==null?e.type===`checkbox`?`on`:``:String(n);(r!==i||!(`_value`in e))&&(e.value=i),n??e.removeAttribute(t),e._value=n;return}let s=!1;if(n===``||n==null){let i=typeof e[t];i===`boolean`?n=r(n):n==null&&i===`string`?(n=``,s=!0):i===`number`&&(n=0,s=!0)}try{e[t]=n}catch{}s&&e.removeAttribute(a||t)}function N(e,t,n,r){e.addEventListener(t,n,r)}function P(e,t,n,r){e.removeEventListener(t,n,r)}var F=Symbol(`_vei`);function I(e,t,n,r,i=null){let a=e[F]||(e[F]={}),o=a[t];if(r&&o)o.value=r;else{let[n,s]=z(t);r?N(e,n,a[t]=U(r,i),s):o&&(P(e,n,o,s),a[t]=void 0)}}var L=/(Once|Passive|Capture)$/,R=/^on:?(?:Once|Passive|Capture)$/;function z(e){let t,n;for(;(n=e.match(L))&&!R.test(e);)t||={},e=e.slice(0,e.length-n[1].length),t[n[1].toLowerCase()]=!0;return[e[2]===`:`?e.slice(3):u(e.slice(2)),t]}var B=0,V=Promise.resolve(),H=()=>B||=(V.then(()=>B=0),Date.now());function U(e,t){let n=e=>{if(!e._vts)e._vts=Date.now();else if(e._vts<=n.attached)return;let r=n.value;if(d(r)){let n=e.stopImmediatePropagation;e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0};let i=r.slice(),a=[e];for(let n=0;n<i.length&&!e._stopped;n++){let e=i[n];e&&h(e,t,5,a)}}else h(r,t,5,[e])};return n.value=e,n.attached=H(),n}var W=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,de=(e,t,n,r,i,o)=>{let c=i===`svg`;t===`class`?w(e,r,c):t===`style`?ce(e,n,r):ne(t)?a(t)||I(e,t,n,r,o):(t[0]===`.`?(t=t.slice(1),!0):t[0]===`^`?(t=t.slice(1),!1):fe(e,t,r,c))?(M(e,t,r),!e.tagName.includes(`-`)&&(t===`value`||t===`checked`||t===`selected`)&&j(e,t,r,c,o,t!==`value`)):e._isVueCE&&(pe(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!f(r)))?M(e,s(t),r,o,t):(t===`true-value`?e._trueValue=r:t===`false-value`&&(e._falseValue=r),j(e,t,r,c))};function fe(e,t,r,i){if(i)return!!(t===`innerHTML`||t===`textContent`||t in e&&W(t)&&n(r));if(t===`spellcheck`||t===`draggable`||t===`translate`||t===`autocorrect`||t===`sandbox`&&e.tagName===`IFRAME`||t===`form`||t===`list`&&e.tagName===`INPUT`||t===`type`&&e.tagName===`TEXTAREA`)return!1;if(t===`width`||t===`height`){let t=e.tagName;if(t===`IMG`||t===`VIDEO`||t===`CANVAS`||t===`SOURCE`)return!1}return W(t)&&f(r)?!1:t in e}function pe(e,t){let n=e._def.props;if(!n)return!1;let r=s(t);return Array.isArray(n)?n.some(e=>s(e)===r):Object.keys(n).some(e=>s(e)===r)}var G=e=>{let t=e.props[`onUpdate:modelValue`]||!1;return d(t)?e=>l(t,e):t};function me(e){e.target.composing=!0}function K(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event(`input`)))}var q=Symbol(`_assign`);function J(e,t,n){return t&&(e=e.trim()),n&&(e=m(e)),e}var he={created(e,{modifiers:{lazy:t,trim:n,number:r}},i){e[q]=G(i);let a=r||i.props&&i.props.type===`number`;N(e,t?`change`:`input`,t=>{t.target.composing||e[q](J(e.value,n,a))}),(n||a)&&N(e,`change`,()=>{e.value=J(e.value,n,a)}),t||(N(e,`compositionstart`,me),N(e,`compositionend`,K),N(e,`change`,K))},mounted(e,{value:t}){e.value=t??``},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:i,number:a}},o){if(e[q]=G(o),e.composing)return;let s=(a||e.type===`number`)&&!/^0\d/.test(e.value)?m(e.value):e.value,c=t??``;if(s===c)return;let l=e.getRootNode();(l instanceof Document||l instanceof ShadowRoot)&&l.activeElement===e&&e.type!==`range`&&(r&&t===n||i&&e.value.trim()===c)||(e.value=c)}},ge={deep:!0,created(t,n,r){t[q]=G(r),N(t,`change`,()=>{let n=t._modelValue,r=Z(t),a=t.checked,o=t[q];if(d(n)){let t=e(n,r),i=t!==-1;if(a&&!i)o(n.concat(r));else if(!a&&i){let e=[...n];e.splice(t,1),o(e)}}else if(i(n)){let e=new Set(n);a?e.add(r):e.delete(r),o(e)}else o(Q(t,a))})},mounted:Y,beforeUpdate(e,t,n){e[q]=G(n),Y(e,t,n)}};function Y(t,{value:n,oldValue:r},a){t._modelValue=n;let s;if(d(n))s=e(n,a.props.value)>-1;else if(i(n))s=n.has(a.props.value);else{if(n===r)return;s=o(n,Q(t,!0))}t.checked!==s&&(t.checked=s)}var _e={created(e,{value:t},n){e.checked=o(t,n.props.value),e[q]=G(n),N(e,`change`,()=>{e[q](Z(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e[q]=G(r),t!==n&&(e.checked=o(t,r.props.value))}},ve={deep:!0,created(e,{value:t,modifiers:{number:n}},r){e._modelValue=t,N(e,`change`,()=>{let t=Array.prototype.filter.call(e.options,e=>e.selected).map(e=>n?m(Z(e)):Z(e));e[q](e.multiple?i(e._modelValue)?new Set(t):t:t[0]),e._assigning=!0,c(()=>{e._assigning=!1})}),e[q]=G(r)},mounted(e,{value:t}){X(e,t)},beforeUpdate(e,{value:t},n){e._modelValue=t,e[q]=G(n)},updated(e,{value:t}){e._assigning||X(e,t)}};function X(t,n){let r=t.multiple,a=d(n);if(!(r&&!a&&!i(n))){for(let i=0,s=t.options.length;i<s;i++){let s=t.options[i],c=Z(s);if(r)if(a){let t=typeof c;t===`string`||t===`number`?s.selected=n.some(e=>String(e)===String(c)):s.selected=e(n,c)>-1}else s.selected=n.has(c);else if(o(Z(s),n)){t.selectedIndex!==i&&(t.selectedIndex=i);return}}!r&&t.selectedIndex!==-1&&(t.selectedIndex=-1)}}function Z(e){return`_value`in e?e._value:e.value}function Q(e,t){let n=t?`_trueValue`:`_falseValue`;return n in e?e[n]:t}var ye=[`ctrl`,`shift`,`alt`,`meta`],be={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>`button`in e&&e.button!==0,middle:e=>`button`in e&&e.button!==1,right:e=>`button`in e&&e.button!==2,exact:(e,t)=>ye.some(n=>e[`${n}Key`]&&!t.includes(n))},xe=(e,t)=>{if(!e)return e;let n=e._withMods||={},r=t.join(`.`);return n[r]||(n[r]=((n,...r)=>{for(let e=0;e<t.length;e++){let r=be[t[e]];if(r&&r(n,t))return}return e(n,...r)}))},Se=t({patchProp:de},S),Ce;function $(){return Ce||=te(Se)}var we=((...e)=>{let t=$().createApp(...e),{mount:r}=t;return t.mount=e=>{let i=Ee(e);if(!i)return;let a=t._component;!n(a)&&!a.render&&!a.template&&(a.template=i.innerHTML),i.nodeType===1&&(i.textContent=``);let o=r(i,!1,Te(i));return i instanceof Element&&(i.removeAttribute(`v-cloak`),i.setAttribute(`data-v-app`,``)),o},t});function Te(e){if(e instanceof SVGElement)return`svg`;if(typeof MathMLElement==`function`&&e instanceof MathMLElement)return`mathml`}function Ee(e){return f(e)?document.querySelector(e):e}export{he as a,ve as i,ge as n,xe as o,_e as r,we as t};
@@ -0,0 +1 @@
1
+ import{A as e,E as t,F as n,I as r,L as i,N as a,P as o,S as s,b as c,u as l,x as u,y as d}from"./console-tbvTUi6p.js";import{a as f,c as p,d as m,f as h,g,h as _,i as v,l as y,m as ee,o as b,p as x,s as S,u as te,y as C}from"./paths-B790iniO.js";var w=typeof document<`u`,T=/#/g,ne=/&/g,re=/\//g,ie=/=/g,E=/\?/g,D=/\+/g,O=/%5B/g,k=/%5D/g,ae=/%5E/g,oe=/%60/g,A=/%7B/g,se=/%7C/g,j=/%7D/g,M=/%20/g;function N(e){return e==null?``:encodeURI(``+e).replace(se,`|`).replace(O,`[`).replace(k,`]`)}function ce(e){return N(e).replace(A,`{`).replace(j,`}`).replace(ae,`^`)}function P(e){return N(e).replace(D,`%2B`).replace(M,`+`).replace(T,`%23`).replace(ne,`%26`).replace(oe,"`").replace(A,`{`).replace(j,`}`).replace(ae,`^`)}function F(e){return P(e).replace(ie,`%3D`)}function le(e){return N(e).replace(T,`%23`).replace(E,`%3F`)}function ue(e){return le(e).replace(re,`%2F`)}function I(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var L=/\/$/,R=e=>e.replace(L,``);function z(e,t,n=`/`){let r,i={},a=``,o=``,s=t.indexOf(`#`),c=t.indexOf(`?`);return c=s>=0&&c>s?-1:c,c>=0&&(r=t.slice(0,c),a=t.slice(c,s>0?s:t.length),i=e(a.slice(1))),s>=0&&(r||=t.slice(0,s),o=t.slice(s,t.length)),r=G(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:I(o)}}function de(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function B(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function fe(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&V(t.matched[r],n.matched[i])&&H(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function V(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function H(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!U(e[n],t[n]))return!1;return!0}function U(e,t){return S(e)?W(e,t):S(t)?W(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function W(e,t){return S(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function G(e,t){if(e.startsWith(`/`))return e;if(!e)return t;let n=t.split(`/`),r=e.split(`/`),i=r[r.length-1];(i===`..`||i===`.`)&&r.push(``);let a=n.length-1,o,s;for(o=0;o<r.length;o++)if(s=r[o],s!==`.`)if(s===`..`)a>1&&a--;else break;return n.slice(0,a).join(`/`)+`/`+r.slice(o).join(`/`)}var K={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0};function q(e){if(!e)if(w){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^/]+/,``)}else e=`/`;return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),R(e)}var J=/^[^#]+#/;function Y(e,t){return e.replace(J,`#`)+t}function X(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var Z=()=>({left:window.scrollX,top:window.scrollY});function pe(e){let t;if(`el`in e){let n=e.el,r=typeof n==`string`&&n.startsWith(`#`),i=typeof n==`string`?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;t=X(i,e)}else t=e;`scrollBehavior`in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left==null?window.scrollX:t.left,t.top==null?window.scrollY:t.top)}function me(e,t){return(history.state?history.state.position-t:-1)+e}var he=new Map;function ge(e,t){he.set(e,t)}function _e(e){let t=he.get(e);return he.delete(e),t}function ve(e){return typeof e==`string`||e&&typeof e==`object`}function ye(e){return typeof e==`string`||typeof e==`symbol`}function be(e){let t={};if(e===``||e===`?`)return t;let n=(e[0]===`?`?e.slice(1):e).split(`&`);for(let e=0;e<n.length;++e){let r=n[e].replace(D,` `),i=r.indexOf(`=`),a=I(i<0?r:r.slice(0,i)),o=i<0?null:I(r.slice(i+1));if(a in t){let e=t[a];S(e)||(e=t[a]=[e]),e.push(o)}else t[a]=o}return t}function xe(e){let t=``;for(let n in e){let r=e[n];if(n=F(n),r==null){r!==void 0&&(t+=(t.length?`&`:``)+n);continue}(S(r)?r.map(e=>e&&P(e)):[r&&P(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function Se(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=S(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}function Q(){let e=[];function t(t){return e.push(t),()=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function $(e,t,n,r,i,a=e=>e()){let o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise((s,c)=>{let l=e=>{e===!1?c(b(4,{from:n,to:t})):e instanceof Error?c(e):ve(e)?c(b(2,{from:t,to:e})):(o&&r.enterCallbacks[i]===o&&typeof e==`function`&&o.push(e),s())},u=a(()=>e.call(r&&r.instances[i],t,n,l)),d=Promise.resolve(u);e.length<3&&(d=d.then(l)),d.catch(e=>c(e))})}function Ce(e,t,n,r,i=e=>e()){let a=[];for(let o of e)for(let e in o.components){let s=o.components[e];if(!(t!==`beforeRouteEnter`&&!o.instances[e]))if(te(s)){let c=(s.__vccOpts||s)[t];c&&a.push($(c,n,r,o,e,i))}else{let c=s();a.push(()=>c.then(a=>{if(!a)throw Error(`Couldn't resolve component "${e}" at "${o.path}"`);let s=p(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&$(c,n,r,o,e,i)()}))}}return a}function we(e,t){let n=[],r=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;o<a;o++){let a=t.matched[o];a&&(e.matched.find(e=>V(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>V(e,s))||i.push(s))}return[n,r,i]}var Te=()=>location.protocol+`//`+location.host;function Ee(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),B(n,``)}return B(n,e)+r+i}function De(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=Ee(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:`pop`,direction:u?u>0?`forward`:`back`:``})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){if(document.visibilityState===`hidden`){let{history:e}=window;if(!e.state)return;e.replaceState(f({},e.state,{scroll:Z()}),``)}}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u),document.removeEventListener(`visibilitychange`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),document.addEventListener(`visibilitychange`,u),{pauseListeners:c,listen:l,destroy:d}}function Oe(e,t,n,r=!1,i=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:i?Z():null}}function ke(e){let{history:t,location:n}=window,r={value:Ee(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:Te()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){a(e,f({},t.state,Oe(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=f({},i.value,t.state,{forward:e,scroll:Z()});a(o.current,o,!0),a(e,f({},Oe(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function Ae(e){e=q(e);let t=ke(e),n=De(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=f({location:``,base:e,go:r,createHref:Y.bind(null,e)},t,n);return Object.defineProperty(i,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,"state",{enumerable:!0,get:()=>t.state.value}),i}var je={type:0,value:``},Me=/[a-zA-Z0-9_]/;function Ne(e){if(!e)return[[]];if(e===`/`)return[[je]];if(!e.startsWith(`/`))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=0,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===0?a.push({type:0,value:l}):n===1||n===2||n===3?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;s<e.length;)switch(c=e[s++],n){case 0:c===`\\`?(r=n,n=4):c===`/`?(l&&d(),o()):c===`:`?(d(),n=1):f();break;case 4:f(),n=r;break;case 1:c===`(`?n=2:Me.test(c)?f():(d(),n=0,c!==`*`&&c!==`?`&&c!==`+`&&s--);break;case 2:c===`)`?u[u.length-1]==`\\`?u=u.slice(0,-1)+c:n=3:u+=c;break;case 3:d(),n=0,c!==`*`&&c!==`?`&&c!==`+`&&s--,u=``;break;default:t(`Unknown state`);break}return n===2&&t(`Unfinished custom RegExp for param "${l}"`),d(),o(),i}var Pe=`[^/]+?`,Fe={sensitive:!1,strict:!1,start:!0,end:!0},Ie=/[.+*?^${}()[\]/\\]/g;function Le(e,t){let n=f({},Fe,t),r=[],i=n.start?`^`:``,a=[];for(let t of e){let e=t.length?[]:[90];n.strict&&!t.length&&(i+=`/`);for(let r=0;r<t.length;r++){let o=t[r],s=40+(n.sensitive?.25:0);if(o.type===0)r||(i+=`/`),i+=o.value.replace(Ie,`\\$&`),s+=40;else if(o.type===1){let{value:e,repeatable:n,optional:c,regexp:l}=o;a.push({name:e,repeatable:n,optional:c});let u=l||Pe;if(u!==Pe){s+=10;try{RegExp(`(${u})`)}catch(t){throw Error(`Invalid custom RegExp for param "${e}" (${u}): `+t.message)}}let d=n?`((?:${u})(?:/(?:${u}))*)`:`(${u})`;r||(d=c&&t.length<2?`(?:/${d})`:`/`+d),c&&(d+=`?`),i+=d,s+=20,c&&(s+=-8),n&&(s+=-20),u===`.*`&&(s+=-50)}e.push(s)}r.push(e)}if(n.strict&&n.end){let e=r.length-1;r[e][r[e].length-1]+=.7000000000000001}n.strict||(i+=`/?`),n.end?i+=`$`:n.strict&&!i.endsWith(`/`)&&(i+=`(?:/|$)`);let o=new RegExp(i,n.sensitive?``:`i`);function s(e){let t=e.match(o),n={};if(!t)return null;for(let e=1;e<t.length;e++){let r=t[e]||``,i=a[e-1];n[i.name]=r&&i.repeatable?r.split(`/`):r}return n}function c(t){let n=``,r=!1;for(let i of e){(!r||!n.endsWith(`/`))&&(n+=`/`),r=!1;for(let e of i)if(e.type===0)n+=e.value;else if(e.type===1){let{value:a,repeatable:o,optional:s}=e,c=a in t?t[a]:``;if(S(c)&&!o)throw Error(`Provided param "${a}" is an array but it is not repeatable (* or + modifiers)`);let l=S(c)?c.join(`/`):c;if(!l)if(s)i.length<2&&(n.endsWith(`/`)?n=n.slice(0,-1):r=!0);else throw Error(`Missing required param "${a}"`);n+=l}}return n||`/`}return{re:o,score:r,keys:a,parse:s,stringify:c}}function Re(e,t){let n=0;for(;n<e.length&&n<t.length;){let r=t[n]-e[n];if(r)return r;n++}return e.length<t.length?e.length===1&&e[0]===80?-1:1:e.length>t.length?t.length===1&&t[0]===80?1:-1:0}function ze(e,t){let n=0,r=e.score,i=t.score;for(;n<r.length&&n<i.length;){let e=Re(r[n],i[n]);if(e)return e;n++}if(Math.abs(i.length-r.length)===1){if(Be(r))return 1;if(Be(i))return-1}return i.length-r.length}function Be(e){let t=e[e.length-1];return e.length>0&&t[t.length-1]<0}var Ve={strict:!1,end:!0,sensitive:!1};function He(e,t,n){let r=f(Le(Ne(e.path),n),{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Ue(e,t){let n=[],r=new Map;t=h(Ve,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=Ge(e);s.aliasOf=r&&r.record;let l=h(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push(Ge(f({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,p;for(let t of u){let{path:u}=t;if(n&&u[0]!==`/`){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=He(t,n,l),r?r.alias.push(d):(p||=d,p!==d&&p.alias.push(d),i&&e.name&&!qe(d)&&o(e.name)),Ze(d)&&c(d),s.children){let e=s.children;for(let t=0;t<e.length;t++)a(e[t],d,r&&r.children[t])}r||=d}return p?()=>{o(p)}:x}function o(e){if(ye(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=Ye(e,n);n.splice(t,0,e),e.record.name&&!qe(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw b(1,{location:e});s=i.record.name,a=f(We(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&We(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name,i.keys.forEach(e=>{e.optional&&!a[e.name]&&delete a[e.name]}));else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw b(1,{location:e,currentLocation:t});s=i.record.name,a=f({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:Je(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function We(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function Ge(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Ke(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Ke(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function qe(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Je(e){return e.reduce((e,t)=>f(e,t.meta),{})}function Ye(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;ze(e,t[i])<0?r=i:n=i+1}let i=Xe(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function Xe(e){let t=e;for(;t=t.parent;)if(Ze(t)&&ze(e,t)===0)return t}function Ze({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Qe(e){let t=u(_),n=u(ee),r=l(()=>{let n=i(e.to);return t.resolve(n)}),a=l(()=>{let{matched:e}=r.value,{length:t}=e,i=e[t-1],a=n.matched;if(!i||!a.length)return-1;let o=a.findIndex(V.bind(null,i));if(o>-1)return o;let s=rt(e[t-2]);return t>1&&rt(i)===s&&a[a.length-1].path!==s?a.findIndex(V.bind(null,e[t-2])):o}),o=l(()=>a.value>-1&&nt(n.params,r.value.params)),s=l(()=>a.value>-1&&a.value===n.matched.length-1&&H(n.params,r.value.params));function c(n={}){if(tt(n)){let n=t[i(e.replace)?`replace`:`push`](i(e.to)).catch(x);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:r,href:l(()=>r.value.href),isActive:o,isExactActive:s,navigate:c}}function $e(e){return e.length===1?e[0]:e}var et=d({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:Qe,setup(e,{slots:t}){let n=a(Qe(e)),{options:r}=u(_),i=l(()=>({[it(e.activeClass,r.linkActiveClass,`router-link-active`)]:n.isActive,[it(e.exactActiveClass,r.linkExactActiveClass,`router-link-exact-active`)]:n.isExactActive}));return()=>{let r=t.default&&$e(t.default(n));return e.custom?r:c(`a`,{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:i.value},r)}}});function tt(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function nt(e,t){for(let n in t){let r=t[n],i=e[n];if(typeof r==`string`){if(r!==i)return!1}else if(!S(i)||i.length!==r.length||r.some((e,t)=>e.valueOf()!==i[t].valueOf()))return!1}return!0}function rt(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var it=(e,t,n)=>e??t??n,at=d({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(n,{attrs:r,slots:a}){let s=u(g),d=l(()=>n.route||s.value),p=u(C,0),h=l(()=>{let e=i(p),{matched:t}=d.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),_=l(()=>d.value.matched[h.value]);t(C,l(()=>h.value+1)),t(m,_),t(g,d);let v=o();return e(()=>[v.value,_.value,n.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!V(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let e=d.value,t=n.name,i=_.value,o=i&&i.components[t];if(!o)return ot(a.default,{Component:o,route:e});let s=i.props[t],l=c(o,f({},s?s===!0?e.params:typeof s==`function`?s(e):s:null,r,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(i.instances[t]=null)},ref:v}));return ot(a.default,{Component:l,route:e})||l}}});function ot(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var st=at;function ct(e){let t=Ue(e.routes,e),a=e.parseQuery||be,o=e.stringifyQuery||xe,c=e.history,l=Q(),u=Q(),d=Q(),p=r(K),m=K;w&&e.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let h=v.bind(null,e=>``+e),te=v.bind(null,ue),C=v.bind(null,I);function T(e,n){let r,i;return ye(e)?(r=t.getRecordMatcher(e),i=n):i=e,t.addRoute(i,r)}function ne(e){let n=t.getRecordMatcher(e);n&&t.removeRoute(n)}function re(){return t.getRoutes().map(e=>e.record)}function ie(e){return!!t.getRecordMatcher(e)}function E(e,n){if(n=f({},n||p.value),typeof e==`string`){let r=z(a,e,n.path),i=t.resolve({path:r.path},n),o=c.createHref(r.fullPath);return f(r,i,{params:C(i.params),redirectedFrom:void 0,href:o})}let r;if(e.path!=null)r=f({},e,{path:z(a,e.path,n.path).path});else{let t=f({},e.params);for(let e in t)t[e]??delete t[e];r=f({},e,{params:te(t)}),n.params=te(n.params)}let i=t.resolve(r,n),s=e.hash||``;i.params=h(C(i.params));let l=de(o,f({},e,{hash:ce(s),path:i.path})),u=c.createHref(l);return f({fullPath:l,hash:s,query:o===xe?Se(e.query):e.query||{}},i,{redirectedFrom:void 0,href:u})}function D(e){return typeof e==`string`?z(a,e,p.value.path):f({},e)}function O(e,t){if(m!==e)return b(8,{from:t,to:e})}function k(e){return A(e)}function ae(e){return k(f(D(e),{replace:!0}))}function oe(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=D(i):{path:i},i.params={}),f({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function A(e,t){let n=m=E(e),r=p.value,i=e.state,a=e.force,s=e.replace===!0,c=oe(n,r);if(c)return A(f(D(c),{state:typeof c==`object`?f({},i,c.state):i,force:a,replace:s}),t||n);let l=n;l.redirectedFrom=t;let u;return!a&&fe(o,r,n)&&(u=b(16,{to:l,from:r}),W(r,r,!0,!1)),(u?Promise.resolve(u):M(l,r)).catch(e=>y(e)?y(e,2)?e:U(e):V(e,l,r)).then(e=>{if(e){if(y(e,2))return A(f({replace:s},D(e.to),{state:typeof e.to==`object`?f({},i,e.to.state):i,force:a}),t||l)}else e=P(l,r,!0,s,i);return N(l,r,e),e})}function se(e,t){let n=O(e,t);return n?Promise.reject(n):Promise.resolve()}function j(e){let t=J.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function M(e,t){let n,[r,i,a]=we(e,t);n=Ce(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push($(r,e,t))});let o=se.bind(null,e,t);return n.push(o),X(n).then(()=>{n=[];for(let r of l.list())n.push($(r,e,t));return n.push(o),X(n)}).then(()=>{n=Ce(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push($(r,e,t))});return n.push(o),X(n)}).then(()=>{n=[];for(let r of a)if(r.beforeEnter)if(S(r.beforeEnter))for(let i of r.beforeEnter)n.push($(i,e,t));else n.push($(r.beforeEnter,e,t));return n.push(o),X(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=Ce(a,`beforeRouteEnter`,e,t,j),n.push(o),X(n))).then(()=>{n=[];for(let r of u.list())n.push($(r,e,t));return n.push(o),X(n)}).catch(e=>y(e,8)?e:Promise.reject(e))}function N(e,t,n){d.list().forEach(r=>j(()=>r(e,t,n)))}function P(e,t,n,r,i){let a=O(e,t);if(a)return a;let o=t===K,s=w?history.state:{};n&&(r||o?c.replace(e.fullPath,f({scroll:o&&s&&s.scroll},i)):c.push(e.fullPath,i)),p.value=e,W(e,t,n,o),U()}let F;function le(){F||=c.listen((e,t,n)=>{if(!Y.listening)return;let r=E(e),i=oe(r,Y.currentRoute.value);if(i){A(f(i,{replace:!0,force:!0}),r).catch(x);return}m=r;let a=p.value;w&&ge(me(a.fullPath,n.delta),Z()),M(r,a).catch(e=>y(e,12)?e:y(e,2)?(A(f(D(e.to),{force:!0}),r).then(e=>{y(e,20)&&!n.delta&&n.type===`pop`&&c.go(-1,!1)}).catch(x),Promise.reject()):(n.delta&&c.go(-n.delta,!1),V(e,r,a))).then(e=>{e||=P(r,a,!1),e&&(n.delta&&!y(e,8)?c.go(-n.delta,!1):n.type===`pop`&&y(e,20)&&c.go(-1,!1)),N(r,a,e)}).catch(x)})}let L=Q(),R=Q(),B;function V(e,t,n){U(e);let r=R.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function H(){return B&&p.value!==K?Promise.resolve():new Promise((e,t)=>{L.add([e,t])})}function U(e){return B||(B=!e,le(),L.list().forEach(([t,n])=>e?n(e):t()),L.reset()),e}function W(t,n,r,i){let{scrollBehavior:a}=e;if(!w||!a)return Promise.resolve();let o=!r&&_e(me(t.fullPath,0))||(i||!r)&&history.state&&history.state.scroll||null;return s().then(()=>a(t,n,o)).then(e=>t===p.value&&e&&pe(e)).catch(e=>t===p.value&&V(e,t,n))}let G=e=>c.go(e),q,J=new Set,Y={currentRoute:p,listening:!0,addRoute:T,removeRoute:ne,clearRoutes:t.clearRoutes,hasRoute:ie,getRoutes:re,resolve:E,options:e,push:k,replace:ae,go:G,back:()=>G(-1),forward:()=>G(1),beforeEach:l.add,beforeResolve:u.add,afterEach:d.add,onError:R.add,isReady:H,install(e){e.component(`RouterLink`,et),e.component(`RouterView`,st),e.config.globalProperties.$router=Y,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>i(p)}),w&&!q&&p.value===K&&(q=!0,k(c.location).catch(e=>{}));let t={};for(let e in K)Object.defineProperty(t,e,{get:()=>p.value[e],enumerable:!0});e.provide(_,Y),e.provide(ee,n(t)),e.provide(g,p);let r=e.unmount;J.add(e),e.unmount=function(){J.delete(e),J.size<1&&(m=K,F&&F(),F=null,p.value=K,q=!1,B=!1),r()}}};function X(e){return e.reduce((e,t)=>e.then(()=>j(t)),Promise.resolve())}return Y}export{Ae as i,st as n,ct as r,et as t};
@@ -0,0 +1,22 @@
1
+ <!doctype html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <meta
7
+ name="description"
8
+ content="本地 Graphiti / Neo4j 知识工作台,包含个人知识、公共项目维护审核与服务连接。"
9
+ />
10
+ <link rel="icon" type="image/png" href="/assets/fuli-logo-DGuyqchQ.png" />
11
+ <title>复利 · Context Graph</title>
12
+ <script type="module" crossorigin src="/assets/index-DwUDhQKc.js"></script>
13
+ <link rel="modulepreload" crossorigin href="/assets/console-tbvTUi6p.js">
14
+ <link rel="modulepreload" crossorigin href="/assets/runtime-dom.esm-bundler-DttsK21F.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/paths-B790iniO.js">
16
+ <link rel="modulepreload" crossorigin href="/assets/vue-router-BYTAoWT3.js">
17
+ <link rel="stylesheet" crossorigin href="/assets/index-Devf7glZ.css">
18
+ </head>
19
+ <body>
20
+ <div id="app"></div>
21
+ </body>
22
+ </html>
@@ -0,0 +1,16 @@
1
+ ARG BASE_IMAGE=python:3.12-slim
2
+ FROM ${BASE_IMAGE}
3
+
4
+ ENV PYTHONDONTWRITEBYTECODE=1 \
5
+ PYTHONUNBUFFERED=1 \
6
+ GRAPHITI_TELEMETRY_ENABLED=false
7
+
8
+ WORKDIR /app
9
+
10
+ COPY pyproject.toml ./
11
+ COPY fuli_graph ./fuli_graph
12
+ RUN pip install --no-cache-dir .
13
+
14
+ EXPOSE 8787
15
+
16
+ CMD ["uvicorn", "fuli_graph.app:app", "--host", "0.0.0.0", "--port", "8787"]
@@ -0,0 +1,5 @@
1
+ """Fuli Graphiti provider."""
2
+
3
+ __all__ = ['__version__']
4
+
5
+ __version__ = '0.2.0'