@alisio/plugin-thesis 0.1.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.
- package/.agents/agents/thesis-architect.md +38 -0
- package/.agents/agents/thesis-coordinator.md +39 -0
- package/.agents/agents/thesis-editor.md +35 -0
- package/.agents/agents/thesis-evidence-auditor.md +37 -0
- package/.agents/agents/thesis-librarian.md +38 -0
- package/.agents/agents/thesis-methodologist.md +39 -0
- package/.agents/agents/thesis-reviewer.md +36 -0
- package/.agents/agents/thesis-writer.md +38 -0
- package/.agents/skills/thesis-build/SKILL.md +48 -0
- package/.agents/skills/thesis-citations/SKILL.md +49 -0
- package/.agents/skills/thesis-csl-authoring/SKILL.md +48 -0
- package/.agents/skills/thesis-editing/SKILL.md +49 -0
- package/.agents/skills/thesis-evidence/SKILL.md +48 -0
- package/.agents/skills/thesis-figures/SKILL.md +50 -0
- package/.agents/skills/thesis-institution-norms/SKILL.md +50 -0
- package/.agents/skills/thesis-intake/SKILL.md +48 -0
- package/.agents/skills/thesis-math/SKILL.md +48 -0
- package/.agents/skills/thesis-methodology/SKILL.md +49 -0
- package/.agents/skills/thesis-outline/SKILL.md +48 -0
- package/.agents/skills/thesis-policy/SKILL.md +48 -0
- package/.agents/skills/thesis-review/SKILL.md +49 -0
- package/.agents/skills/thesis-search/SKILL.md +47 -0
- package/.agents/skills/thesis-writing/SKILL.md +52 -0
- package/LICENSE +21 -0
- package/README.es.md +242 -0
- package/README.md +235 -0
- package/THIRD_PARTY_NOTICES.md +94 -0
- package/assets/architecture.svg +1 -0
- package/assets/evidence-pipeline.svg +1 -0
- package/assets/lifecycle.svg +1 -0
- package/assets/policy-resolution.svg +1 -0
- package/cover.webp +0 -0
- package/dist/authoring.d.ts +30 -0
- package/dist/authoring.d.ts.map +1 -0
- package/dist/authoring.js +681 -0
- package/dist/authoring.js.map +1 -0
- package/dist/brief.d.ts +40 -0
- package/dist/brief.d.ts.map +1 -0
- package/dist/brief.js +566 -0
- package/dist/brief.js.map +1 -0
- package/dist/cache.d.ts +8 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +20 -0
- package/dist/cache.js.map +1 -0
- package/dist/checks/brief.d.ts +5 -0
- package/dist/checks/brief.d.ts.map +1 -0
- package/dist/checks/brief.js +38 -0
- package/dist/checks/brief.js.map +1 -0
- package/dist/checks/citations.d.ts +14 -0
- package/dist/checks/citations.d.ts.map +1 -0
- package/dist/checks/citations.js +87 -0
- package/dist/checks/citations.js.map +1 -0
- package/dist/checks/claims.d.ts +16 -0
- package/dist/checks/claims.d.ts.map +1 -0
- package/dist/checks/claims.js +147 -0
- package/dist/checks/claims.js.map +1 -0
- package/dist/checks/closing.d.ts +20 -0
- package/dist/checks/closing.d.ts.map +1 -0
- package/dist/checks/closing.js +168 -0
- package/dist/checks/closing.js.map +1 -0
- package/dist/checks/design.d.ts +5 -0
- package/dist/checks/design.d.ts.map +1 -0
- package/dist/checks/design.js +107 -0
- package/dist/checks/design.js.map +1 -0
- package/dist/checks/document.d.ts +17 -0
- package/dist/checks/document.d.ts.map +1 -0
- package/dist/checks/document.js +213 -0
- package/dist/checks/document.js.map +1 -0
- package/dist/checks/evidence.d.ts +7 -0
- package/dist/checks/evidence.d.ts.map +1 -0
- package/dist/checks/evidence.js +133 -0
- package/dist/checks/evidence.js.map +1 -0
- package/dist/checks/hygiene.d.ts +5 -0
- package/dist/checks/hygiene.d.ts.map +1 -0
- package/dist/checks/hygiene.js +37 -0
- package/dist/checks/hygiene.js.map +1 -0
- package/dist/checks/index.d.ts +21 -0
- package/dist/checks/index.d.ts.map +1 -0
- package/dist/checks/index.js +98 -0
- package/dist/checks/index.js.map +1 -0
- package/dist/checks/language.d.ts +14 -0
- package/dist/checks/language.d.ts.map +1 -0
- package/dist/checks/language.js +73 -0
- package/dist/checks/language.js.map +1 -0
- package/dist/checks/outline.d.ts +25 -0
- package/dist/checks/outline.d.ts.map +1 -0
- package/dist/checks/outline.js +214 -0
- package/dist/checks/outline.js.map +1 -0
- package/dist/checks/policy.d.ts +5 -0
- package/dist/checks/policy.d.ts.map +1 -0
- package/dist/checks/policy.js +129 -0
- package/dist/checks/policy.js.map +1 -0
- package/dist/checks/project.d.ts +65 -0
- package/dist/checks/project.d.ts.map +1 -0
- package/dist/checks/project.js +203 -0
- package/dist/checks/project.js.map +1 -0
- package/dist/checks/styles.d.ts +12 -0
- package/dist/checks/styles.d.ts.map +1 -0
- package/dist/checks/styles.js +67 -0
- package/dist/checks/styles.js.map +1 -0
- package/dist/checks/writing.d.ts +6 -0
- package/dist/checks/writing.d.ts.map +1 -0
- package/dist/checks/writing.js +115 -0
- package/dist/checks/writing.js.map +1 -0
- package/dist/chrome/detect.d.ts +19 -0
- package/dist/chrome/detect.d.ts.map +1 -0
- package/dist/chrome/detect.js +116 -0
- package/dist/chrome/detect.js.map +1 -0
- package/dist/claims.d.ts +19 -0
- package/dist/claims.d.ts.map +1 -0
- package/dist/claims.js +99 -0
- package/dist/claims.js.map +1 -0
- package/dist/cli.d.ts +11 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +262 -0
- package/dist/cli.js.map +1 -0
- package/dist/context.d.ts +55 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +62 -0
- package/dist/context.js.map +1 -0
- package/dist/coordinator.d.ts +139 -0
- package/dist/coordinator.d.ts.map +1 -0
- package/dist/coordinator.js +710 -0
- package/dist/coordinator.js.map +1 -0
- package/dist/delegate.d.ts +34 -0
- package/dist/delegate.d.ts.map +1 -0
- package/dist/delegate.js +105 -0
- package/dist/delegate.js.map +1 -0
- package/dist/diffguard.d.ts +24 -0
- package/dist/diffguard.d.ts.map +1 -0
- package/dist/diffguard.js +92 -0
- package/dist/diffguard.js.map +1 -0
- package/dist/doctor.d.ts +34 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +155 -0
- package/dist/doctor.js.map +1 -0
- package/dist/draft.d.ts +64 -0
- package/dist/draft.d.ts.map +1 -0
- package/dist/draft.js +801 -0
- package/dist/draft.js.map +1 -0
- package/dist/figure.d.ts +13 -0
- package/dist/figure.d.ts.map +1 -0
- package/dist/figure.js +143 -0
- package/dist/figure.js.map +1 -0
- package/dist/finalize.d.ts +29 -0
- package/dist/finalize.d.ts.map +1 -0
- package/dist/finalize.js +230 -0
- package/dist/finalize.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +206 -0
- package/dist/index.js.map +1 -0
- package/dist/intake.d.ts +57 -0
- package/dist/intake.d.ts.map +1 -0
- package/dist/intake.js +772 -0
- package/dist/intake.js.map +1 -0
- package/dist/labels.d.ts +50 -0
- package/dist/labels.d.ts.map +1 -0
- package/dist/labels.js +98 -0
- package/dist/labels.js.map +1 -0
- package/dist/outline.d.ts +45 -0
- package/dist/outline.d.ts.map +1 -0
- package/dist/outline.js +148 -0
- package/dist/outline.js.map +1 -0
- package/dist/pack-commands.d.ts +18 -0
- package/dist/pack-commands.d.ts.map +1 -0
- package/dist/pack-commands.js +397 -0
- package/dist/pack-commands.js.map +1 -0
- package/dist/package-paths.d.ts +8 -0
- package/dist/package-paths.d.ts.map +1 -0
- package/dist/package-paths.js +13 -0
- package/dist/package-paths.js.map +1 -0
- package/dist/policy/context.d.ts +19 -0
- package/dist/policy/context.d.ts.map +1 -0
- package/dist/policy/context.js +62 -0
- package/dist/policy/context.js.map +1 -0
- package/dist/policy/ethics.d.ts +59 -0
- package/dist/policy/ethics.d.ts.map +1 -0
- package/dist/policy/ethics.js +106 -0
- package/dist/policy/ethics.js.map +1 -0
- package/dist/policy/kinds.d.ts +9 -0
- package/dist/policy/kinds.d.ts.map +1 -0
- package/dist/policy/kinds.js +68 -0
- package/dist/policy/kinds.js.map +1 -0
- package/dist/policy/packs.d.ts +53 -0
- package/dist/policy/packs.d.ts.map +1 -0
- package/dist/policy/packs.js +336 -0
- package/dist/policy/packs.js.map +1 -0
- package/dist/policy/resolver.d.ts +87 -0
- package/dist/policy/resolver.d.ts.map +1 -0
- package/dist/policy/resolver.js +337 -0
- package/dist/policy/resolver.js.map +1 -0
- package/dist/policy/rules.d.ts +65 -0
- package/dist/policy/rules.d.ts.map +1 -0
- package/dist/policy/rules.js +194 -0
- package/dist/policy/rules.js.map +1 -0
- package/dist/protocol.d.ts +46 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +86 -0
- package/dist/protocol.js.map +1 -0
- package/dist/render/adapters/chrome-pdf/cdp.d.ts +36 -0
- package/dist/render/adapters/chrome-pdf/cdp.d.ts.map +1 -0
- package/dist/render/adapters/chrome-pdf/cdp.js +291 -0
- package/dist/render/adapters/chrome-pdf/cdp.js.map +1 -0
- package/dist/render/adapters/chrome-pdf/index.d.ts +10 -0
- package/dist/render/adapters/chrome-pdf/index.d.ts.map +1 -0
- package/dist/render/adapters/chrome-pdf/index.js +139 -0
- package/dist/render/adapters/chrome-pdf/index.js.map +1 -0
- package/dist/render/adapters/chrome-pdf/network.d.ts +7 -0
- package/dist/render/adapters/chrome-pdf/network.d.ts.map +1 -0
- package/dist/render/adapters/chrome-pdf/network.js +33 -0
- package/dist/render/adapters/chrome-pdf/network.js.map +1 -0
- package/dist/render/adapters/html-preview/index.d.ts +8 -0
- package/dist/render/adapters/html-preview/index.d.ts.map +1 -0
- package/dist/render/adapters/html-preview/index.js +62 -0
- package/dist/render/adapters/html-preview/index.js.map +1 -0
- package/dist/render/adapters/test-json/index.d.ts +8 -0
- package/dist/render/adapters/test-json/index.d.ts.map +1 -0
- package/dist/render/adapters/test-json/index.js +62 -0
- package/dist/render/adapters/test-json/index.js.map +1 -0
- package/dist/render/adapters/typst-pdf/emitter.d.ts +21 -0
- package/dist/render/adapters/typst-pdf/emitter.d.ts.map +1 -0
- package/dist/render/adapters/typst-pdf/emitter.js +259 -0
- package/dist/render/adapters/typst-pdf/emitter.js.map +1 -0
- package/dist/render/adapters/typst-pdf/escape.d.ts +14 -0
- package/dist/render/adapters/typst-pdf/escape.d.ts.map +1 -0
- package/dist/render/adapters/typst-pdf/escape.js +56 -0
- package/dist/render/adapters/typst-pdf/escape.js.map +1 -0
- package/dist/render/adapters/typst-pdf/index.d.ts +9 -0
- package/dist/render/adapters/typst-pdf/index.d.ts.map +1 -0
- package/dist/render/adapters/typst-pdf/index.js +154 -0
- package/dist/render/adapters/typst-pdf/index.js.map +1 -0
- package/dist/render/adapters/typst-pdf/profile.d.ts +3 -0
- package/dist/render/adapters/typst-pdf/profile.d.ts.map +1 -0
- package/dist/render/adapters/typst-pdf/profile.js +55 -0
- package/dist/render/adapters/typst-pdf/profile.js.map +1 -0
- package/dist/render/adapters/typst-pdf/runner.d.ts +52 -0
- package/dist/render/adapters/typst-pdf/runner.d.ts.map +1 -0
- package/dist/render/adapters/typst-pdf/runner.js +209 -0
- package/dist/render/adapters/typst-pdf/runner.js.map +1 -0
- package/dist/render/adapters/typst-pdf/setup.d.ts +30 -0
- package/dist/render/adapters/typst-pdf/setup.d.ts.map +1 -0
- package/dist/render/adapters/typst-pdf/setup.js +183 -0
- package/dist/render/adapters/typst-pdf/setup.js.map +1 -0
- package/dist/render/adapters/typst-pdf/version.d.ts +8 -0
- package/dist/render/adapters/typst-pdf/version.d.ts.map +1 -0
- package/dist/render/adapters/typst-pdf/version.js +14 -0
- package/dist/render/adapters/typst-pdf/version.js.map +1 -0
- package/dist/render/assemble.d.ts +28 -0
- package/dist/render/assemble.d.ts.map +1 -0
- package/dist/render/assemble.js +309 -0
- package/dist/render/assemble.js.map +1 -0
- package/dist/render/assets.d.ts +27 -0
- package/dist/render/assets.d.ts.map +1 -0
- package/dist/render/assets.js +232 -0
- package/dist/render/assets.js.map +1 -0
- package/dist/render/build.d.ts +43 -0
- package/dist/render/build.d.ts.map +1 -0
- package/dist/render/build.js +187 -0
- package/dist/render/build.js.map +1 -0
- package/dist/render/charts.d.ts +83 -0
- package/dist/render/charts.d.ts.map +1 -0
- package/dist/render/charts.js +633 -0
- package/dist/render/charts.js.map +1 -0
- package/dist/render/default-registry.d.ts +7 -0
- package/dist/render/default-registry.d.ts.map +1 -0
- package/dist/render/default-registry.js +15 -0
- package/dist/render/default-registry.js.map +1 -0
- package/dist/render/diagram-theme.d.ts +7 -0
- package/dist/render/diagram-theme.d.ts.map +1 -0
- package/dist/render/diagram-theme.js +50 -0
- package/dist/render/diagram-theme.js.map +1 -0
- package/dist/render/dialect.d.ts +23 -0
- package/dist/render/dialect.d.ts.map +1 -0
- package/dist/render/dialect.js +188 -0
- package/dist/render/dialect.js.map +1 -0
- package/dist/render/html/citations.d.ts +70 -0
- package/dist/render/html/citations.d.ts.map +1 -0
- package/dist/render/html/citations.js +371 -0
- package/dist/render/html/citations.js.map +1 -0
- package/dist/render/html/css.d.ts +14 -0
- package/dist/render/html/css.d.ts.map +1 -0
- package/dist/render/html/css.js +113 -0
- package/dist/render/html/css.js.map +1 -0
- package/dist/render/html/emitter.d.ts +20 -0
- package/dist/render/html/emitter.d.ts.map +1 -0
- package/dist/render/html/emitter.js +652 -0
- package/dist/render/html/emitter.js.map +1 -0
- package/dist/render/html/escape.d.ts +11 -0
- package/dist/render/html/escape.d.ts.map +1 -0
- package/dist/render/html/escape.js +32 -0
- package/dist/render/html/escape.js.map +1 -0
- package/dist/render/html/katex.d.ts +9 -0
- package/dist/render/html/katex.d.ts.map +1 -0
- package/dist/render/html/katex.js +39 -0
- package/dist/render/html/katex.js.map +1 -0
- package/dist/render/html/stage.d.ts +12 -0
- package/dist/render/html/stage.d.ts.map +1 -0
- package/dist/render/html/stage.js +30 -0
- package/dist/render/html/stage.js.map +1 -0
- package/dist/render/index.d.ts +5 -0
- package/dist/render/index.d.ts.map +1 -0
- package/dist/render/index.js +5 -0
- package/dist/render/index.js.map +1 -0
- package/dist/render/math.d.ts +9 -0
- package/dist/render/math.d.ts.map +1 -0
- package/dist/render/math.js +60 -0
- package/dist/render/math.js.map +1 -0
- package/dist/render/model.d.ts +233 -0
- package/dist/render/model.d.ts.map +1 -0
- package/dist/render/model.js +2 -0
- package/dist/render/model.js.map +1 -0
- package/dist/render/numbering.d.ts +51 -0
- package/dist/render/numbering.d.ts.map +1 -0
- package/dist/render/numbering.js +155 -0
- package/dist/render/numbering.js.map +1 -0
- package/dist/render/output-name.d.ts +4 -0
- package/dist/render/output-name.d.ts.map +1 -0
- package/dist/render/output-name.js +11 -0
- package/dist/render/output-name.js.map +1 -0
- package/dist/render/palettes.d.ts +22 -0
- package/dist/render/palettes.d.ts.map +1 -0
- package/dist/render/palettes.js +46 -0
- package/dist/render/palettes.js.map +1 -0
- package/dist/render/parse.d.ts +15 -0
- package/dist/render/parse.d.ts.map +1 -0
- package/dist/render/parse.js +637 -0
- package/dist/render/parse.js.map +1 -0
- package/dist/render/port.d.ts +79 -0
- package/dist/render/port.d.ts.map +1 -0
- package/dist/render/port.js +2 -0
- package/dist/render/port.js.map +1 -0
- package/dist/render/registry.d.ts +11 -0
- package/dist/render/registry.d.ts.map +1 -0
- package/dist/render/registry.js +21 -0
- package/dist/render/registry.js.map +1 -0
- package/dist/render/text.d.ts +13 -0
- package/dist/render/text.d.ts.map +1 -0
- package/dist/render/text.js +65 -0
- package/dist/render/text.js.map +1 -0
- package/dist/render/walk.d.ts +13 -0
- package/dist/render/walk.d.ts.map +1 -0
- package/dist/render/walk.js +69 -0
- package/dist/render/walk.js.map +1 -0
- package/dist/research/bibtex.d.ts +12 -0
- package/dist/research/bibtex.d.ts.map +1 -0
- package/dist/research/bibtex.js +99 -0
- package/dist/research/bibtex.js.map +1 -0
- package/dist/research/client.d.ts +112 -0
- package/dist/research/client.d.ts.map +1 -0
- package/dist/research/client.js +661 -0
- package/dist/research/client.js.map +1 -0
- package/dist/research/dossier.d.ts +31 -0
- package/dist/research/dossier.d.ts.map +1 -0
- package/dist/research/dossier.js +54 -0
- package/dist/research/dossier.js.map +1 -0
- package/dist/research/flow.d.ts +31 -0
- package/dist/research/flow.d.ts.map +1 -0
- package/dist/research/flow.js +635 -0
- package/dist/research/flow.js.map +1 -0
- package/dist/research/library.d.ts +79 -0
- package/dist/research/library.d.ts.map +1 -0
- package/dist/research/library.js +319 -0
- package/dist/research/library.js.map +1 -0
- package/dist/research/verify.d.ts +80 -0
- package/dist/research/verify.d.ts.map +1 -0
- package/dist/research/verify.js +307 -0
- package/dist/research/verify.js.map +1 -0
- package/dist/resources.d.ts +15 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +148 -0
- package/dist/resources.js.map +1 -0
- package/dist/review.d.ts +22 -0
- package/dist/review.d.ts.map +1 -0
- package/dist/review.js +355 -0
- package/dist/review.js.map +1 -0
- package/dist/schemas.d.ts +252 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +1020 -0
- package/dist/schemas.js.map +1 -0
- package/dist/sections.d.ts +30 -0
- package/dist/sections.d.ts.map +1 -0
- package/dist/sections.js +62 -0
- package/dist/sections.js.map +1 -0
- package/dist/storage.d.ts +21 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +296 -0
- package/dist/storage.js.map +1 -0
- package/dist/style-commands.d.ts +15 -0
- package/dist/style-commands.d.ts.map +1 -0
- package/dist/style-commands.js +54 -0
- package/dist/style-commands.js.map +1 -0
- package/dist/styles/csl.d.ts +58 -0
- package/dist/styles/csl.d.ts.map +1 -0
- package/dist/styles/csl.js +112 -0
- package/dist/styles/csl.js.map +1 -0
- package/dist/styles/discovery.d.ts +45 -0
- package/dist/styles/discovery.d.ts.map +1 -0
- package/dist/styles/discovery.js +99 -0
- package/dist/styles/discovery.js.map +1 -0
- package/dist/styles/golden.d.ts +52 -0
- package/dist/styles/golden.d.ts.map +1 -0
- package/dist/styles/golden.js +216 -0
- package/dist/styles/golden.js.map +1 -0
- package/dist/styles/profile.d.ts +126 -0
- package/dist/styles/profile.d.ts.map +1 -0
- package/dist/styles/profile.js +582 -0
- package/dist/styles/profile.js.map +1 -0
- package/dist/styles/xml.d.ts +22 -0
- package/dist/styles/xml.d.ts.map +1 -0
- package/dist/styles/xml.js +179 -0
- package/dist/styles/xml.js.map +1 -0
- package/dist/types.d.ts +285 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +155 -0
- package/dist/types.js.map +1 -0
- package/dist/typst-pins.d.ts +16 -0
- package/dist/typst-pins.d.ts.map +1 -0
- package/dist/typst-pins.js +39 -0
- package/dist/typst-pins.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/dist/workflow.d.ts +49 -0
- package/dist/workflow.d.ts.map +1 -0
- package/dist/workflow.js +722 -0
- package/dist/workflow.js.map +1 -0
- package/dist/workspace.d.ts +12 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +71 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +70 -0
- package/policy-packs/countries/CO/academic-standards/ntc-1486-2022.yaml +188 -0
- package/policy-packs/countries/CO/copyright/decision-andina-351.yaml +61 -0
- package/policy-packs/countries/CO/copyright/ley-1915-2018.yaml +25 -0
- package/policy-packs/countries/CO/copyright/ley-23-1982.yaml +64 -0
- package/policy-packs/countries/CO/domains/health/resolucion-8430-1993.yaml +219 -0
- package/policy-packs/countries/CO/higher-education/ley-30-1992.yaml +61 -0
- package/policy-packs/countries/CO/manifest.yaml +42 -0
- package/policy-packs/countries/CO/official-domains.yaml +90 -0
- package/policy-packs/countries/CO/privacy/ley-1581-2012.yaml +197 -0
- package/policy-packs/countries/CO/research-integrity/minciencias-res-0314-2018.yaml +64 -0
- package/policy-packs/global/academic-integrity.yaml +45 -0
- package/policy-packs/global/academic-writing.yaml +70 -0
- package/policy-packs/global/evidence-quality.yaml +81 -0
- package/policy-packs/global/manifest.yaml +54 -0
- package/policy-packs/global/objective-verbs.yaml +245 -0
- package/policy-packs/global/reporting-guidelines.yaml +392 -0
- package/policy-packs/global/work-types.yaml +195 -0
- package/styles/LICENSE-CSL +375 -0
- package/styles/apa.csl +2283 -0
- package/styles/catalog.json +43 -0
- package/styles/fixtures/apa-7.expected.json +25 -0
- package/styles/fixtures/icontec-ntc1486-2022.expected.json +25 -0
- package/styles/fixtures/ieee.expected.json +25 -0
- package/styles/fixtures/references.jsonl +8 -0
- package/styles/icontec-ntc1486-2022.csl +388 -0
- package/styles/ieee.csl +519 -0
- package/templates/html/runtime.js +159 -0
- package/templates/html/thesis.css +98 -0
- package/templates/html/vendor/katex/LICENSE +21 -0
- package/templates/html/vendor/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- package/templates/html/vendor/katex/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- package/templates/html/vendor/katex/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- package/templates/html/vendor/katex/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- package/templates/html/vendor/katex/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- package/templates/html/vendor/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
- package/templates/html/vendor/katex/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- package/templates/html/vendor/katex/fonts/KaTeX_Main-Italic.woff2 +0 -0
- package/templates/html/vendor/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
- package/templates/html/vendor/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- package/templates/html/vendor/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
- package/templates/html/vendor/katex/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- package/templates/html/vendor/katex/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- package/templates/html/vendor/katex/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- package/templates/html/vendor/katex/fonts/KaTeX_Script-Regular.woff2 +0 -0
- package/templates/html/vendor/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- package/templates/html/vendor/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- package/templates/html/vendor/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- package/templates/html/vendor/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- package/templates/html/vendor/katex/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- package/templates/html/vendor/katex/katex.min.css +1 -0
- package/templates/html/vendor/katex/katex.min.js +1 -0
- package/templates/html/vendor/mermaid/LICENSE +21 -0
- package/templates/html/vendor/mermaid/mermaid.min.js +3587 -0
- package/templates/html/vendor/pagedjs/LICENSE +21 -0
- package/templates/html/vendor/pagedjs/paged.polyfill.min.js +4 -0
- package/templates/palettes.json +57 -0
- package/templates/profiles/apa-7.profile.yaml +15 -0
- package/templates/profiles/generic.profile.yaml +20 -0
- package/templates/profiles/icontec-ntc1486-2022.profile.yaml +36 -0
- package/templates/profiles/ieee.profile.yaml +14 -0
- package/templates/typst/i18n/en.yaml +31 -0
- package/templates/typst/i18n/es.yaml +31 -0
- package/templates/typst/i18n/pt.yaml +31 -0
- package/templates/typst/thesis.typ +276 -0
- package/typst-packages/preview/merman/0.3.0/LICENSE +231 -0
- package/typst-packages/preview/merman/0.3.0/README.md +388 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/cose-base-v1/LICENSE +21 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/cose-base-v2/LICENSE +21 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/cytoscape/LICENSE +19 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/cytoscape-cose-bilkent/LICENSE +21 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/cytoscape-fcose/LICENSE +19 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/d3-shape/LICENSE +13 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/dagre/LICENSE +19 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/dompurify/LICENSE +202 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/eclipse-elk/LICENSE.md +264 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/elkjs/LICENSE.md +264 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/fmin/LICENSE +27 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/graphlib/LICENSE +19 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/layout-base-v1/LICENSE +21 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/layout-base-v2/LICENSE +21 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/mermaid/LICENSE +21 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/rough-rs/LICENSE +21 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/roughjs/LICENSE +21 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/sanitize-url/LICENSE +21 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/venn-js/LICENSE +22 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/wasm-minimal-protocol/LICENSE +24 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/zenuml-core/LICENSE +21 -0
- package/typst-packages/preview/merman/0.3.0/THIRD_PARTY_NOTICES.md +265 -0
- package/typst-packages/preview/merman/0.3.0/lib.typ +1 -0
- package/typst-packages/preview/merman/0.3.0/merman_typst_plugin.wasm +0 -0
- package/typst-packages/preview/merman/0.3.0/src/capabilities.typ +5 -0
- package/typst-packages/preview/merman/0.3.0/src/context.typ +1 -0
- package/typst-packages/preview/merman/0.3.0/src/errors.typ +33 -0
- package/typst-packages/preview/merman/0.3.0/src/exports.typ +5 -0
- package/typst-packages/preview/merman/0.3.0/src/figure.typ +143 -0
- package/typst-packages/preview/merman/0.3.0/src/image.typ +50 -0
- package/typst-packages/preview/merman/0.3.0/src/options.typ +566 -0
- package/typst-packages/preview/merman/0.3.0/src/plugin.typ +1 -0
- package/typst-packages/preview/merman/0.3.0/src/raw.typ +22 -0
- package/typst-packages/preview/merman/0.3.0/src/render.typ +137 -0
- package/typst-packages/preview/merman/0.3.0/src/source.typ +7 -0
- package/typst-packages/preview/merman/0.3.0/src/units.typ +51 -0
- package/typst-packages/preview/merman/0.3.0/typst.toml +12 -0
- package/typst-packages/preview/mitex/0.2.7/CHANGELOG.md +69 -0
- package/typst-packages/preview/mitex/0.2.7/LICENSE +176 -0
- package/typst-packages/preview/mitex/0.2.7/README.md +154 -0
- package/typst-packages/preview/mitex/0.2.7/lib.typ +1 -0
- package/typst-packages/preview/mitex/0.2.7/mitex.typ +45 -0
- package/typst-packages/preview/mitex/0.2.7/mitex.wasm +0 -0
- package/typst-packages/preview/mitex/0.2.7/specs/README.md +250 -0
- package/typst-packages/preview/mitex/0.2.7/specs/latex/standard.typ +1187 -0
- package/typst-packages/preview/mitex/0.2.7/specs/mod.typ +12 -0
- package/typst-packages/preview/mitex/0.2.7/specs/prelude.typ +230 -0
- package/typst-packages/preview/mitex/0.2.7/typst.toml +12 -0
package/README.es.md
ADDED
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
# @alisio/plugin-thesis
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
> English: [README.md](./README.md). Ambos README deben actualizarse en conjunto.
|
|
6
|
+
|
|
7
|
+
Thesis Studio para Alisio. Te entrevista, planifica la investigación, investiga cada sección hasta
|
|
8
|
+
formar una biblioteca de evidencia verificada, redacta solo a partir de evidencia aprobada, revisa el
|
|
9
|
+
resultado de forma independiente y compone una tesis universitaria en el idioma que elijas. El código
|
|
10
|
+
determinista decide cada compuerta que pueda; los agentes hijos solo proponen. La política proviene de
|
|
11
|
+
paquetes versionados y con fuentes, y las reglas de tu institución siempre prevalecen.
|
|
12
|
+
|
|
13
|
+
## Requisitos
|
|
14
|
+
|
|
15
|
+
- Node.js 22.16 o superior y `@alisio/sdk` 0.3 a 0.6. No se necesitan credenciales.
|
|
16
|
+
- Motor de PDF: ejecuta `/thesis:setup` una vez para instalar en la caché el Typst fijado (con SHA-256
|
|
17
|
+
verificado). Sin Typst, `/thesis:build` recurre a Chrome o Chromium sin interfaz, y
|
|
18
|
+
`/thesis:build --html` no necesita ninguno.
|
|
19
|
+
- La investigación consulta OpenAlex, Crossref y arXiv (orígenes fijos). Define
|
|
20
|
+
`ALISIO_THESIS_CONTACT_EMAIL` para usar sus «polite pools»; se lee solo del entorno y nunca se
|
|
21
|
+
almacena ni se registra.
|
|
22
|
+
|
|
23
|
+
## Instalación
|
|
24
|
+
|
|
25
|
+
```sh
|
|
26
|
+
alisio install npm:@alisio/plugin-thesis
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Inicio rápido
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
/thesis:init # crea thesis/ e inicia la entrevista (primero el idioma)
|
|
33
|
+
/thesis:design # redacta research/protocol.md; aprueba las compuertas humanas A y B
|
|
34
|
+
/thesis:outline # redacta outline/outline.json; aprueba la compuerta OUTLINE
|
|
35
|
+
/thesis:research SEC-03 # busca, verifica, valora; lee evidence/dossiers/SEC-03.md
|
|
36
|
+
/thesis:draft SEC-03 # redacta, edita y revisa la sección; tú la apruebas
|
|
37
|
+
/thesis:build # genera el PDF (o /thesis:build --html)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
`/thesis:status` muestra la fase, las compuertas y el siguiente paso, y `/thesis:next` lo ejecuta. En
|
|
41
|
+
una sesión sin interfaz, `/thesis:init` devuelve las preguntas con sus opciones y la sintaxis exacta de
|
|
42
|
+
`/thesis:answer`: las respuestas son pares `id=valor` separados por espacios o saltos de línea, o un
|
|
43
|
+
único objeto JSON; el texto libre va en `<id>:text=...`.
|
|
44
|
+
|
|
45
|
+
## Arquitectura
|
|
46
|
+
|
|
47
|
+

|
|
48
|
+
|
|
49
|
+
Los comandos, las herramientas y la CLI llegan a un único coordinador en TypeScript. Este ejecuta
|
|
50
|
+
agentes hijos de solo lectura, acepta únicamente JSON validado, escribe él mismo todos los archivos,
|
|
51
|
+
ejecuta las comprobaciones y entrega un `ThesisDocument` neutral al puerto de renderizado. Un adaptador
|
|
52
|
+
DOCX futuro está previsto y no se incluye todavía.
|
|
53
|
+
|
|
54
|
+
## Ciclo de vida
|
|
55
|
+
|
|
56
|
+

|
|
57
|
+
|
|
58
|
+
La tesis avanza desde la entrevista y el diseño, pasando por tres compuertas humanas, a un ciclo por
|
|
59
|
+
sección y luego a la revisión, la finalización (compuerta humana C) y una compilación PDF/A.
|
|
60
|
+
|
|
61
|
+
### El ciclo por sección
|
|
62
|
+
|
|
63
|
+
1. `/thesis:research SEC-id`: busca, verifica y valora; tú validas el dossier.
|
|
64
|
+
2. `/thesis:draft SEC-id`: el redactor recibe solo evidencia citable y devuelve Markdown con anclas de
|
|
65
|
+
afirmaciones. El código valida claves de cita, anclas, etiquetas y figuras, escribe
|
|
66
|
+
`chapters/NN-slug.md` y `claims/claims.jsonl` y ejecuta las comprobaciones. Luego el editor cambia
|
|
67
|
+
solo la redacción: el código compara citas, anclas, números, etiquetas y fórmulas antes y después y
|
|
68
|
+
rechaza cualquier cambio. Tú apruebas, pides una revisión o vuelves a la investigación. La
|
|
69
|
+
aprobación compila las secciones aprobadas.
|
|
70
|
+
3. Cuando todas las secciones están aprobadas, la tesis entra en revisión: `/thesis:review all`,
|
|
71
|
+
corrige o descarta los hallazgos y luego `/thesis:finalize`.
|
|
72
|
+
|
|
73
|
+
Los resúmenes se redactan al final; la declaración de uso de IA, la dedicatoria y los agradecimientos no
|
|
74
|
+
requieren investigación; la bibliografía se genera desde la biblioteca.
|
|
75
|
+
|
|
76
|
+
## Comandos
|
|
77
|
+
|
|
78
|
+
| Comando | Propósito |
|
|
79
|
+
| --- | --- |
|
|
80
|
+
| `/thesis:init [dir] [--lang <bcp47>] [--presentation]` | Crea el espacio de trabajo y ejecuta la entrevista |
|
|
81
|
+
| `/thesis:answer -- <id=valor ...\|json>` | Responde las preguntas pendientes sin interfaz |
|
|
82
|
+
| `/thesis:status` | Fase, compuertas, secciones y siguiente paso |
|
|
83
|
+
| `/thesis:next` | Ejecuta el siguiente paso recomendado |
|
|
84
|
+
| `/thesis:check [gate...]` | Ejecuta las comprobaciones y escribe `build/check-report.json` |
|
|
85
|
+
| `/thesis:design`, `/thesis:outline` | Redactan el protocolo o el esquema y piden las compuertas humanas |
|
|
86
|
+
| `/thesis:approve <destino> [-- notas]` | Registra una aprobación: `A`, `B`, `OUTLINE`, `C`, `SEC-id`, `FND-id`, `ETH-id`, `norms`, `style:id` |
|
|
87
|
+
| `/thesis:revise <destino> -- <comentarios>` | Envía comentarios al rol responsable del destino |
|
|
88
|
+
| `/thesis:research <SEC-id\|next> [-- ...]` | Investiga una sección; `-- add <DOI o URL; título; año; tipo>` verifica una fuente que ya tienes |
|
|
89
|
+
| `/thesis:draft <SEC-id\|next> [-- comentarios]` | Redacta, edita, comprueba y pide aprobación |
|
|
90
|
+
| `/thesis:figure <SEC-id> -- <solicitud>` | Redacta un gráfico, diagrama o tabla (devuelve el Markdown a insertar) |
|
|
91
|
+
| `/thesis:review [SEC-id\|all]` | Revisión independiente; los hallazgos van a `reviews/FND-*.json` |
|
|
92
|
+
| `/thesis:finalize` | G9 y G10, compuerta humana C, compilación PDF/A, `build/submission/` |
|
|
93
|
+
| `/thesis:build [full\|approved\|SEC-id] [--pdfa] [--html]` | Genera el PDF o la vista previa HTML |
|
|
94
|
+
| `/thesis:setup` | Instala el motor Typst fijado (con suma de verificación) |
|
|
95
|
+
| `/thesis:pack new\|list\|check\|explain` | Crea, lista, comprueba y explica paquetes de políticas |
|
|
96
|
+
| `/thesis:style new\|list\|check` | Crea, lista y comprueba estilos de cita y perfiles |
|
|
97
|
+
| `/thesis:norms import -- <texto de guía\|URL\|ruta>` | Convierte una guía o rúbrica en un paquete del espacio de trabajo (tú lo apruebas) |
|
|
98
|
+
| `/thesis:doctor` | Informa motores, paquetes incluidos y paquetes de políticas; no cambia nada |
|
|
99
|
+
|
|
100
|
+
Los argumentos usan `<destino> -- <texto>`. Las URL de guías solo se obtienen mediante una herramienta
|
|
101
|
+
`web_fetch` del anfitrión.
|
|
102
|
+
|
|
103
|
+
## Herramientas
|
|
104
|
+
|
|
105
|
+
| Herramienta | Propósito |
|
|
106
|
+
| --- | --- |
|
|
107
|
+
| `thesis_scholar_search` | Busca en OpenAlex, Crossref o arXiv |
|
|
108
|
+
| `thesis_scholar_resolve` | Resuelve un DOI o identificador a un registro académico |
|
|
109
|
+
| `thesis_status` | Resume el espacio de trabajo |
|
|
110
|
+
| `thesis_check` | Ejecuta las comprobaciones deterministas |
|
|
111
|
+
| `thesis_build` | Genera la tesis |
|
|
112
|
+
|
|
113
|
+
## CLI
|
|
114
|
+
|
|
115
|
+
```sh
|
|
116
|
+
alisio-thesis check [dir] [--json] [--gate G0,G7] [--no-write]
|
|
117
|
+
alisio-thesis build [dir] [full|approved|SEC-id] [--pdfa] [--json]
|
|
118
|
+
alisio-thesis bib [dir] [--check]
|
|
119
|
+
alisio-thesis doctor [--json]
|
|
120
|
+
alisio-thesis style list|check [dir] [--json]
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
`check` termina con 0 si ninguna comprobación falla, 1 si alguna falla y 2 ante errores de uso o de
|
|
124
|
+
entorno, por lo que sirve en CI y en hooks de git.
|
|
125
|
+
|
|
126
|
+
## Estructura del espacio de trabajo
|
|
127
|
+
|
|
128
|
+
```text
|
|
129
|
+
thesis/
|
|
130
|
+
thesis.yaml # ficha del proyecto (editable por personas)
|
|
131
|
+
compliance-profile.json # reglas resueltas con su rastro de ruleId
|
|
132
|
+
research/protocol.md outline/outline.json
|
|
133
|
+
evidence/ # library.jsonl, rejected.jsonl, search-log.jsonl, dossiers/
|
|
134
|
+
claims/claims.jsonl bibliography/references.bib (generado, nunca se edita a mano)
|
|
135
|
+
chapters/ chapters/annexes/
|
|
136
|
+
figures/{charts,diagrams,images}/ data/
|
|
137
|
+
styles/ # .csl, .profile.yaml y fixtures/ del espacio de trabajo
|
|
138
|
+
policy/ policy-packs/ # ajustes simples y paquetes del espacio de trabajo
|
|
139
|
+
reviews/FND-*.json
|
|
140
|
+
build/ # generado, ignorado por git: PDF, HTML, informe, submission/
|
|
141
|
+
.alisio/thesis/state.json # estado del ciclo de vida
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Dialecto Markdown
|
|
145
|
+
|
|
146
|
+
| Elemento | Sintaxis |
|
|
147
|
+
| --- | --- |
|
|
148
|
+
| Etiqueta de sección | `## Metodología {#sec-methodology}` |
|
|
149
|
+
| Cita | `[@perez2021]`, `[@perez2021, p. 17]`, `[@a2020; @b2021]`; narrativa `@perez2021` |
|
|
150
|
+
| Referencia cruzada | `@fig-x`, `@tbl-x`, `@eq-x`, `@sec-x` |
|
|
151
|
+
| Matemáticas | en línea `$x^2$`; en bloque `$$ ... $$ {#eq-x}` |
|
|
152
|
+
| Figura | `{#fig-x width=100%}` (`.vl.json`, `.mmd`, `.svg`, `.png`, `.jpg`) |
|
|
153
|
+
| Tabla | Tabla GFM seguida de `Table: Leyenda {#tbl-x}` |
|
|
154
|
+
| Nota al pie | `[^1]` |
|
|
155
|
+
| Ancla de afirmación | `<!-- claim:c3 -->` al inicio del párrafo (la consumen las comprobaciones) |
|
|
156
|
+
|
|
157
|
+
El HTML crudo, el Typst crudo y los atributos desconocidos son errores `HYG-001`. Los gráficos son
|
|
158
|
+
especificaciones Vega-Lite cuyo `data.url` nombra un archivo `.csv` o `.json` dentro de `thesis/data/`;
|
|
159
|
+
el plugin los renderiza con colores definidos por la paleta. Los diagramas Mermaid usan un tema generado
|
|
160
|
+
a partir de la paleta.
|
|
161
|
+
|
|
162
|
+
## Idiomas
|
|
163
|
+
|
|
164
|
+
La tesis se escribe en cualquier idioma BCP-47 que elijas. Las etiquetas generadas (portada, títulos,
|
|
165
|
+
leyendas) se incluyen en inglés y español; los demás idiomas usan las etiquetas en inglés. `LNG-001`
|
|
166
|
+
detecta inglés, español, portugués y francés. El resumen en un segundo idioma es opcional.
|
|
167
|
+
|
|
168
|
+
## Estilos de cita, estilos del espacio de trabajo y perfiles
|
|
169
|
+
|
|
170
|
+
Estilos CSL incluidos: `apa-7`, `ieee` y un `icontec-ntc1486-2022` provisional (notas al pie numeradas
|
|
171
|
+
con Ibid./Op. cit.; no existe un CSL oficial, así que confírmalo con tu programa). Coloca tus propios
|
|
172
|
+
`<id>.csl` y `<id>.profile.yaml` en `thesis/styles/` y selecciona el id en `thesis.yaml`. Los perfiles son
|
|
173
|
+
YAML declarativo con un esquema cerrado (`extends` de un perfil incluido y luego márgenes, tipografías,
|
|
174
|
+
títulos, leyendas, numeración de páginas y portada); las claves desconocidas fallan con `PRF-001`.
|
|
175
|
+
`/thesis:style check` los valida (`CSL-001`, `PRF-001`, `CSL-010`). `/thesis:style new` redacta un estilo
|
|
176
|
+
a partir de una guía y te pide aprobarlo antes de usarlo.
|
|
177
|
+
|
|
178
|
+
## Paquetes de políticas
|
|
179
|
+
|
|
180
|
+

|
|
181
|
+
|
|
182
|
+
Los paquetes incluidos `global` y `CO`, tus paquetes del espacio de trabajo y los ajustes simples
|
|
183
|
+
alimentan un único resolutor. Este ordena las reglas por nivel y alcance, reemplaza una regla incluida
|
|
184
|
+
solo con `overrides: true` y registra el rastro de `ruleId` de cada valor en el perfil de cumplimiento.
|
|
185
|
+
|
|
186
|
+
Se amplía sin modificar el plugin. Agrega paquetes en `thesis/policy-packs/` (`international/`,
|
|
187
|
+
`countries/`, `institutions/<CC>/<slug>/` con `faculties/` y `programs/`, `writing/`), cada uno con un
|
|
188
|
+
`manifest.yaml` (`packId`, `scope`, `version`, y opcionalmente `appliesWhen` y `extends`).
|
|
189
|
+
`/thesis:pack new <scope> <id>` genera un paquete comentado, `/thesis:pack check` lo valida (`PCK-001` a
|
|
190
|
+
`PCK-004`, `PCK-010`) y `/thesis:pack explain <ruleId|valor>` imprime el rastro de resolución. Para
|
|
191
|
+
ajustes simples sin manifiesto, coloca archivos de reglas en `thesis/policy/` (`institution.yaml`,
|
|
192
|
+
`faculty.yaml`, `program.yaml`, `rubric.yaml`, `writing-*.yaml`). Las reglas con
|
|
193
|
+
`basis: secondary_source` conviene confirmarlas con tu programa.
|
|
194
|
+
|
|
195
|
+
## Evidencia
|
|
196
|
+
|
|
197
|
+

|
|
198
|
+
|
|
199
|
+
El código verifica los candidatos de las fuentes académicas (resolución de DOI, similitud de título,
|
|
200
|
+
estado de retractación, dominios oficiales) antes de que un auditor los valore. Solo se pueden citar los
|
|
201
|
+
registros de la biblioteca, y los candidatos rechazados quedan en `evidence/rejected.jsonl`.
|
|
202
|
+
|
|
203
|
+
## Comprobaciones deterministas
|
|
204
|
+
|
|
205
|
+
Las comprobaciones son funciones puras agrupadas en las compuertas G0 a G10: ficha y políticas (`BRF`,
|
|
206
|
+
`POL`, `CSL`, `PRF`), diseño y esquema (`DSN`, `OUT`), evidencia (`EVD`), citas y afirmaciones (`CIT`,
|
|
207
|
+
`CLM`), referencias cruzadas, figuras y matemáticas (`XRF`, `FIG`, `MTH`), idioma y redacción (`LNG`,
|
|
208
|
+
`WRT`, `HYG`), ética y uso de IA (`ETH`, `POL-AI`), compilación (`BLD`), revisión (`REV`) y finalización
|
|
209
|
+
(`FIN`). Ejecuta `/thesis:check` o `alisio-thesis check`.
|
|
210
|
+
|
|
211
|
+
## Sin Typst
|
|
212
|
+
|
|
213
|
+
`/thesis:build` prefiere el Typst fijado. Si no hay ninguno, recurre a Chrome o Chromium sin interfaz
|
|
214
|
+
(`ALISIO_THESIS_CHROME` elige un binario, `off` desactiva el recurso) y avisa de que el diseño difiere:
|
|
215
|
+
las citas usan una aproximación integrada del estilo seleccionado, y PDF/A requiere Typst.
|
|
216
|
+
`/thesis:build --html` escribe `build/thesis.html`. Todo lo que usa la página está incluido en el
|
|
217
|
+
paquete; Chrome se ejecuta con un perfil temporal y todas las solicitudes de red bloqueadas.
|
|
218
|
+
|
|
219
|
+
## Agentes y habilidades
|
|
220
|
+
|
|
221
|
+
Ocho agentes de solo lectura (coordinador, metodólogo, bibliotecario, auditor de evidencia, arquitecto,
|
|
222
|
+
redactor, editor, revisor) y quince habilidades específicas se incluyen en `.agents/`. Solo el código del
|
|
223
|
+
coordinador escribe archivos.
|
|
224
|
+
|
|
225
|
+
## Seguridad
|
|
226
|
+
|
|
227
|
+
- Toda ruta aportada por el usuario o por un agente hijo permanece dentro del espacio de trabajo; la
|
|
228
|
+
salida de los agentes hijos no es confiable: es JSON validado y acotado.
|
|
229
|
+
- Sin shell: los procesos usan arreglos de argumentos y tiempos límite. Typst se ejecuta con su raíz en
|
|
230
|
+
el directorio de compilación, nunca con Typst crudo desde Markdown, y solo con paquetes incluidos.
|
|
231
|
+
- Vega se ejecuta con `vega-interpreter` (sin generación de código) y solo lee `thesis/data/`.
|
|
232
|
+
- El uso de red se limita a los orígenes académicos, la descarga de `/thesis:setup` y las herramientas
|
|
233
|
+
del anfitrión.
|
|
234
|
+
- El estado y los archivos generados se escriben de forma atómica con permisos restrictivos.
|
|
235
|
+
|
|
236
|
+
## Licencias
|
|
237
|
+
|
|
238
|
+
MIT. Los paquetes Typst incluidos, las bibliotecas de navegador (Paged.js, KaTeX, Mermaid) y sus
|
|
239
|
+
licencias figuran en `THIRD_PARTY_NOTICES.md`. Los estilos `apa.csl` e `ieee.csl` provienen del
|
|
240
|
+
repositorio Citation Style Language bajo CC BY-SA 3.0; `apa.csl` es un derivado modificado y documentado
|
|
241
|
+
(una corrección de macro de fecha) y conserva la misma licencia. Las reglas de los paquetes de políticas
|
|
242
|
+
citan sus fuentes.
|
package/README.md
ADDED
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
# @alisio/plugin-thesis
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
> Español: [README.es.md](./README.es.md). The two READMEs must be updated together.
|
|
6
|
+
|
|
7
|
+
Thesis Studio for Alisio. It interviews you, plans the research, researches each section into a
|
|
8
|
+
verified evidence library, drafts from approved evidence only, reviews the result independently and
|
|
9
|
+
typesets a university thesis in the language you choose. Deterministic code decides every gate it
|
|
10
|
+
can; child agents only propose. Policy comes from versioned, sourced packs, and your institution's
|
|
11
|
+
rules always win.
|
|
12
|
+
|
|
13
|
+
## Requirements
|
|
14
|
+
|
|
15
|
+
- Node.js 22.16 or newer and `@alisio/sdk` 0.3 to 0.6. No credentials are needed.
|
|
16
|
+
- PDF engine: run `/thesis:setup` once to install the pinned Typst into the cache (SHA-256
|
|
17
|
+
verified). Without Typst, `/thesis:build` falls back to headless Chrome or Chromium, and
|
|
18
|
+
`/thesis:build --html` needs neither.
|
|
19
|
+
- Research queries OpenAlex, Crossref and arXiv (fixed origins). Set `ALISIO_THESIS_CONTACT_EMAIL`
|
|
20
|
+
to use their polite pools; it is read from the environment only and never stored or logged.
|
|
21
|
+
|
|
22
|
+
## Install
|
|
23
|
+
|
|
24
|
+
```sh
|
|
25
|
+
alisio install npm:@alisio/plugin-thesis
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Quickstart
|
|
29
|
+
|
|
30
|
+
```text
|
|
31
|
+
/thesis:init # create thesis/ and start the interview (language first)
|
|
32
|
+
/thesis:design # draft research/protocol.md; approve Human Gates A and B
|
|
33
|
+
/thesis:outline # draft outline/outline.json; approve the OUTLINE gate
|
|
34
|
+
/thesis:research SEC-03 # search, verify, appraise; read evidence/dossiers/SEC-03.md
|
|
35
|
+
/thesis:draft SEC-03 # write, edit and check the section; you approve it
|
|
36
|
+
/thesis:build # build the PDF (or /thesis:build --html)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
`/thesis:status` shows the phase, gates and the next step, and `/thesis:next` runs it. In a headless
|
|
40
|
+
session `/thesis:init` returns the questions with their options and the exact `/thesis:answer`
|
|
41
|
+
syntax: answers are `id=value` pairs separated by spaces or new lines, or one JSON object; free text
|
|
42
|
+
goes in `<id>:text=...`.
|
|
43
|
+
|
|
44
|
+
## Architecture
|
|
45
|
+
|
|
46
|
+

|
|
47
|
+
|
|
48
|
+
Commands, tools and the CLI reach one TypeScript coordinator. It runs read-only child agents, accepts
|
|
49
|
+
only validated JSON, writes every file itself, runs the checks and hands a neutral `ThesisDocument`
|
|
50
|
+
to the renderer port. A future DOCX adapter is planned and is not shipped.
|
|
51
|
+
|
|
52
|
+
## Lifecycle
|
|
53
|
+
|
|
54
|
+

|
|
55
|
+
|
|
56
|
+
The thesis moves from intake and design through three human gates to a per-section loop, then
|
|
57
|
+
review, finalization (Human Gate C) and a PDF/A build.
|
|
58
|
+
|
|
59
|
+
### The per-section loop
|
|
60
|
+
|
|
61
|
+
1. `/thesis:research SEC-id`: search, verify, appraise; you validate the dossier.
|
|
62
|
+
2. `/thesis:draft SEC-id`: the writer receives only citable evidence and returns Markdown with claim
|
|
63
|
+
anchors. Code validates citation keys, anchors, labels and figures, writes `chapters/NN-slug.md`
|
|
64
|
+
and `claims/claims.jsonl` and runs the checks. The editor then changes wording only: code compares
|
|
65
|
+
citations, claim anchors, numbers, labels and math before and after and rejects any change. You
|
|
66
|
+
approve, ask for a revision or go back to research. Approval builds the approved sections.
|
|
67
|
+
3. When every section is approved the thesis enters review: `/thesis:review all`, fix or dismiss
|
|
68
|
+
findings, then `/thesis:finalize`.
|
|
69
|
+
|
|
70
|
+
Abstracts are drafted last; the AI-use declaration, dedication and acknowledgments need no research;
|
|
71
|
+
the bibliography is generated from the library.
|
|
72
|
+
|
|
73
|
+
## Commands
|
|
74
|
+
|
|
75
|
+
| Command | Purpose |
|
|
76
|
+
| --- | --- |
|
|
77
|
+
| `/thesis:init [dir] [--lang <bcp47>] [--presentation]` | Create the workspace and run the interview |
|
|
78
|
+
| `/thesis:answer -- <id=value ...\|json>` | Answer pending interview questions headlessly |
|
|
79
|
+
| `/thesis:status` | Phase, gates, sections and the next step |
|
|
80
|
+
| `/thesis:next` | Run the next recommended step |
|
|
81
|
+
| `/thesis:check [gate...]` | Run deterministic checks, write `build/check-report.json` |
|
|
82
|
+
| `/thesis:design`, `/thesis:outline` | Draft the protocol or the outline and ask the human gates |
|
|
83
|
+
| `/thesis:approve <target> [-- notes]` | Record an approval: `A`, `B`, `OUTLINE`, `C`, `SEC-id`, `FND-id`, `ETH-id`, `norms`, `style:id` |
|
|
84
|
+
| `/thesis:revise <target> -- <feedback>` | Send feedback to the role that owns the target |
|
|
85
|
+
| `/thesis:research <SEC-id\|next> [-- ...]` | Research a section; `-- add <DOI or URL; title; year; type>` verifies a source you have |
|
|
86
|
+
| `/thesis:draft <SEC-id\|next> [-- feedback]` | Draft, edit, check and ask for approval |
|
|
87
|
+
| `/thesis:figure <SEC-id> -- <request>` | Draft a chart, diagram or table (returns Markdown to insert) |
|
|
88
|
+
| `/thesis:review [SEC-id\|all]` | Independent review; findings go to `reviews/FND-*.json` |
|
|
89
|
+
| `/thesis:finalize` | G9 and G10, Human Gate C, PDF/A build, `build/submission/` |
|
|
90
|
+
| `/thesis:build [full\|approved\|SEC-id] [--pdfa] [--html]` | Build the PDF or the HTML preview |
|
|
91
|
+
| `/thesis:setup` | Install the pinned Typst engine (checksum verified) |
|
|
92
|
+
| `/thesis:pack new\|list\|check\|explain` | Create, list, check and explain policy packs |
|
|
93
|
+
| `/thesis:style new\|list\|check` | Author, list and check citation styles and profiles |
|
|
94
|
+
| `/thesis:norms import -- <guide text\|URL\|path>` | Turn a guide or rubric into a workspace pack (you approve it) |
|
|
95
|
+
| `/thesis:doctor` | Report engines, vendored packages and packs; changes nothing |
|
|
96
|
+
|
|
97
|
+
Arguments use `<target> -- <text>`. Guide URLs are fetched only through a host `web_fetch` tool.
|
|
98
|
+
|
|
99
|
+
## Tools
|
|
100
|
+
|
|
101
|
+
| Tool | Purpose |
|
|
102
|
+
| --- | --- |
|
|
103
|
+
| `thesis_scholar_search` | Search OpenAlex, Crossref or arXiv |
|
|
104
|
+
| `thesis_scholar_resolve` | Resolve a DOI or identifier to a scholarly record |
|
|
105
|
+
| `thesis_status` | Summarize the workspace |
|
|
106
|
+
| `thesis_check` | Run the deterministic checks |
|
|
107
|
+
| `thesis_build` | Build the thesis |
|
|
108
|
+
|
|
109
|
+
## CLI
|
|
110
|
+
|
|
111
|
+
```sh
|
|
112
|
+
alisio-thesis check [dir] [--json] [--gate G0,G7] [--no-write]
|
|
113
|
+
alisio-thesis build [dir] [full|approved|SEC-id] [--pdfa] [--json]
|
|
114
|
+
alisio-thesis bib [dir] [--check]
|
|
115
|
+
alisio-thesis doctor [--json]
|
|
116
|
+
alisio-thesis style list|check [dir] [--json]
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
`check` exits 0 when no check fails, 1 when a check fails and 2 on usage or environment errors, so it
|
|
120
|
+
works in CI and git hooks.
|
|
121
|
+
|
|
122
|
+
## Workspace layout
|
|
123
|
+
|
|
124
|
+
```text
|
|
125
|
+
thesis/
|
|
126
|
+
thesis.yaml # project brief (human-editable)
|
|
127
|
+
compliance-profile.json # resolved rules with their ruleId trail
|
|
128
|
+
research/protocol.md outline/outline.json
|
|
129
|
+
evidence/ # library.jsonl, rejected.jsonl, search-log.jsonl, dossiers/
|
|
130
|
+
claims/claims.jsonl bibliography/references.bib (generated, never hand-edited)
|
|
131
|
+
chapters/ chapters/annexes/
|
|
132
|
+
figures/{charts,diagrams,images}/ data/
|
|
133
|
+
styles/ # workspace .csl, .profile.yaml, fixtures/
|
|
134
|
+
policy/ policy-packs/ # simple overrides and workspace packs
|
|
135
|
+
reviews/FND-*.json
|
|
136
|
+
build/ # generated, git-ignored: PDF, HTML, check report, submission/
|
|
137
|
+
.alisio/thesis/state.json # lifecycle state
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Markdown dialect
|
|
141
|
+
|
|
142
|
+
| Construct | Syntax |
|
|
143
|
+
| --- | --- |
|
|
144
|
+
| Section label | `## Methodology {#sec-methodology}` |
|
|
145
|
+
| Citation | `[@perez2021]`, `[@perez2021, p. 17]`, `[@a2020; @b2021]`; narrative `@perez2021` |
|
|
146
|
+
| Cross-reference | `@fig-x`, `@tbl-x`, `@eq-x`, `@sec-x` |
|
|
147
|
+
| Math | inline `$x^2$`; display `$$ ... $$ {#eq-x}` |
|
|
148
|
+
| Figure | `{#fig-x width=100%}` (`.vl.json`, `.mmd`, `.svg`, `.png`, `.jpg`) |
|
|
149
|
+
| Table | GFM pipe table followed by `Table: Caption {#tbl-x}` |
|
|
150
|
+
| Footnote | `[^1]` |
|
|
151
|
+
| Claim anchor | `<!-- claim:c3 -->` at paragraph start (consumed by checks) |
|
|
152
|
+
|
|
153
|
+
Raw HTML, raw Typst and unknown attributes are `HYG-001` errors. Charts are Vega-Lite specs whose
|
|
154
|
+
`data.url` names a `.csv` or `.json` file under `thesis/data/`; the plugin renders them itself with
|
|
155
|
+
palette-driven colors. Mermaid diagrams take a theme generated from the palette.
|
|
156
|
+
|
|
157
|
+
## Languages
|
|
158
|
+
|
|
159
|
+
The thesis is written in any BCP-47 language you choose. Generated labels (cover, headings, captions)
|
|
160
|
+
ship in English and Spanish; other languages use the English labels. `LNG-001` detects English,
|
|
161
|
+
Spanish, Portuguese and French. A second-language abstract is optional.
|
|
162
|
+
|
|
163
|
+
## Citation styles, workspace styles and profiles
|
|
164
|
+
|
|
165
|
+
Shipped CSL styles: `apa-7`, `ieee` and a provisional `icontec-ntc1486-2022` (numbered footnotes with
|
|
166
|
+
Ibid./Op. cit.; no official CSL exists, so confirm it with your program). Put your own `<id>.csl` and
|
|
167
|
+
`<id>.profile.yaml` in `thesis/styles/` and select the id in `thesis.yaml`. Profiles are declarative
|
|
168
|
+
YAML with a closed schema (`extends` a shipped profile, then override margins, fonts, headings,
|
|
169
|
+
captions, page numbers, cover); unknown keys fail `PRF-001`. `/thesis:style check` validates them
|
|
170
|
+
(`CSL-001`, `PRF-001`, `CSL-010`). `/thesis:style new` drafts a style from a guide and asks you to
|
|
171
|
+
approve it first.
|
|
172
|
+
|
|
173
|
+
## Policy packs
|
|
174
|
+
|
|
175
|
+

|
|
176
|
+
|
|
177
|
+
Shipped `global` and `CO` packs and your workspace packs and simple overrides feed one resolver. It
|
|
178
|
+
orders rules by level and scope, replaces a shipped rule only with `overrides: true` and records the
|
|
179
|
+
`ruleId` trail of every value in the compliance profile.
|
|
180
|
+
|
|
181
|
+
Extend it without modifying the plugin. Add packs under `thesis/policy-packs/` (`international/`,
|
|
182
|
+
`countries/`, `institutions/<CC>/<slug>/` with `faculties/` and `programs/`, `writing/`), each with a
|
|
183
|
+
`manifest.yaml` (`packId`, `scope`, `version`, optional `appliesWhen` and `extends`). `/thesis:pack new
|
|
184
|
+
<scope> <id>` scaffolds a commented pack, `/thesis:pack check` validates it (`PCK-001` to `PCK-004`,
|
|
185
|
+
`PCK-010`) and `/thesis:pack explain <ruleId|value>` prints a resolution trail. For simple overrides
|
|
186
|
+
without a manifest, put rule files in `thesis/policy/` (`institution.yaml`, `faculty.yaml`,
|
|
187
|
+
`program.yaml`, `rubric.yaml`, `writing-*.yaml`). Rules marked `basis: secondary_source` should be
|
|
188
|
+
confirmed with your program.
|
|
189
|
+
|
|
190
|
+
## Evidence
|
|
191
|
+
|
|
192
|
+

|
|
193
|
+
|
|
194
|
+
Candidates from the scholarly sources are verified by code (DOI resolution, title similarity,
|
|
195
|
+
retraction status, official domains) before an auditor appraises them. Only library records can be
|
|
196
|
+
cited, and rejected candidates stay in `evidence/rejected.jsonl`.
|
|
197
|
+
|
|
198
|
+
## Deterministic checks
|
|
199
|
+
|
|
200
|
+
Checks are pure functions grouped in gates G0 to G10: brief and policy (`BRF`, `POL`, `CSL`, `PRF`),
|
|
201
|
+
design and outline (`DSN`, `OUT`), evidence (`EVD`), citations and claims (`CIT`, `CLM`), cross-references,
|
|
202
|
+
figures and math (`XRF`, `FIG`, `MTH`), language and writing (`LNG`, `WRT`, `HYG`), ethics and AI use
|
|
203
|
+
(`ETH`, `POL-AI`), build (`BLD`), review (`REV`) and finalization (`FIN`). Run `/thesis:check` or
|
|
204
|
+
`alisio-thesis check`.
|
|
205
|
+
|
|
206
|
+
## Without Typst
|
|
207
|
+
|
|
208
|
+
`/thesis:build` prefers the pinned Typst. When none is available it falls back to headless Chrome or
|
|
209
|
+
Chromium (`ALISIO_THESIS_CHROME` selects a binary, `off` disables the fallback) and warns that the
|
|
210
|
+
layout differs: citations use a built-in approximation of the selected style, and PDF/A needs Typst.
|
|
211
|
+
`/thesis:build --html` writes `build/thesis.html`. Everything the page uses is vendored; Chrome runs
|
|
212
|
+
with a temporary profile and every network request blocked.
|
|
213
|
+
|
|
214
|
+
## Agents and skills
|
|
215
|
+
|
|
216
|
+
Eight read-only agents (coordinator, methodologist, librarian, evidence auditor, architect, writer,
|
|
217
|
+
editor, reviewer) and fifteen focused skills ship in `.agents/`. Only the coordinator code writes
|
|
218
|
+
files.
|
|
219
|
+
|
|
220
|
+
## Security
|
|
221
|
+
|
|
222
|
+
- Every user- or child-supplied path stays inside the workspace; child output is untrusted JSON,
|
|
223
|
+
validated and capped.
|
|
224
|
+
- No shell: processes use argv arrays and timeouts. Typst runs with its root set to the build
|
|
225
|
+
directory, never from raw Typst in Markdown, and only vendored packages.
|
|
226
|
+
- Vega runs with `vega-interpreter` (no code generation) and reads only `thesis/data/`.
|
|
227
|
+
- Network use is limited to the scholarly origins, the `/thesis:setup` release download and host tools.
|
|
228
|
+
- State and generated files are written atomically with restrictive modes.
|
|
229
|
+
|
|
230
|
+
## Licensing
|
|
231
|
+
|
|
232
|
+
MIT. Vendored Typst packages, browser libraries (Paged.js, KaTeX, Mermaid) and their licenses are
|
|
233
|
+
listed in `THIRD_PARTY_NOTICES.md`. The `apa.csl` and `ieee.csl` styles come from the Citation Style
|
|
234
|
+
Language repository under CC BY-SA 3.0; `apa.csl` is a documented modified derivative (a date-macro fix)
|
|
235
|
+
and keeps the same license. Policy-pack rules cite their sources.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Third-party notices
|
|
2
|
+
|
|
3
|
+
This package vendors two Typst packages, three browser libraries for the Chrome/HTML output and three CSL styles, and depends on seven npm packages. Each keeps its own
|
|
4
|
+
license; the full license texts ship next to the vendored files.
|
|
5
|
+
|
|
6
|
+
## Vendored Typst packages (`typst-packages/preview/`)
|
|
7
|
+
|
|
8
|
+
These are copied unmodified from the Typst package registry and loaded offline through
|
|
9
|
+
`--package-path`; nothing is downloaded at build time.
|
|
10
|
+
|
|
11
|
+
| Package | Version | License | Files |
|
|
12
|
+
| --- | --- | --- | --- |
|
|
13
|
+
| mitex | 0.2.7 | Apache-2.0 | `typst-packages/preview/mitex/0.2.7/` (license: `LICENSE`) |
|
|
14
|
+
| merman | 0.3.0 | MIT OR Apache-2.0 | `typst-packages/preview/merman/0.3.0/` (licenses: `LICENSE`, `THIRD_PARTY_NOTICES.md`, `THIRD_PARTY_LICENSES/`) |
|
|
15
|
+
|
|
16
|
+
merman bundles the following components in its WebAssembly plugin. Their license texts are in
|
|
17
|
+
`typst-packages/preview/merman/0.3.0/THIRD_PARTY_LICENSES/`:
|
|
18
|
+
|
|
19
|
+
| Component | Version | License |
|
|
20
|
+
| --- | --- | --- |
|
|
21
|
+
| cose-base 1.x | 1.0.3 | MIT |
|
|
22
|
+
| cose-base 2.x | 2.2.0 | MIT |
|
|
23
|
+
| Cytoscape.js | 3.34.0 | MIT |
|
|
24
|
+
| cytoscape.js-cose-bilkent | 4.1.0 | MIT |
|
|
25
|
+
| cytoscape.js-fcose | 2.2.0 | MIT |
|
|
26
|
+
| d3-shape | 3.2.0 | ISC |
|
|
27
|
+
| Dagre | 2.0.2 | MIT |
|
|
28
|
+
| DOMPurify | 3.4.13 | Apache-2.0 OR MPL-2.0 |
|
|
29
|
+
| fmin | 0.0.4 | BSD-3-Clause |
|
|
30
|
+
| Graphlib | 2.2.4 | MIT |
|
|
31
|
+
| layout-base 1.x | 1.0.2 | MIT |
|
|
32
|
+
| layout-base 2.x | 2.0.1 | MIT |
|
|
33
|
+
| Mermaid | 11.16.1 | MIT |
|
|
34
|
+
| rough-rs (roughr) | 0.12.0 | MIT |
|
|
35
|
+
| Rough.js | 4.6.6 | MIT |
|
|
36
|
+
| sanitize-url | 7.1.1 | MIT |
|
|
37
|
+
| @upsetjs/venn.js | 2.0.0 | MIT |
|
|
38
|
+
| ZenUML Core | 3.50.1 | MIT |
|
|
39
|
+
| Eclipse Layout Kernel | 0.9.1 | EPL-2.0 |
|
|
40
|
+
| elkjs | 0.9.3 | EPL-2.0 |
|
|
41
|
+
| wasm-minimal-protocol | 0.2.0 | Unlicense |
|
|
42
|
+
|
|
43
|
+
The Eclipse Layout Kernel and elkjs are distributed under the Eclipse Public License 2.0; their
|
|
44
|
+
source is available from https://github.com/eclipse-elk/elk and https://github.com/kieler/elkjs.
|
|
45
|
+
|
|
46
|
+
## Vendored browser libraries (`templates/html/vendor/`)
|
|
47
|
+
|
|
48
|
+
Used only by the Chrome PDF fallback and the HTML preview (`/thesis:build --html`). They are copied
|
|
49
|
+
unmodified from the npm tarballs listed below (versions pinned) and loaded from the local build
|
|
50
|
+
directory; the page never fetches anything from the network. KaTeX is also evaluated in Node (in an
|
|
51
|
+
isolated `vm` context) to typeset formulas before the page is written. Each folder keeps its upstream
|
|
52
|
+
license text.
|
|
53
|
+
|
|
54
|
+
| Library | Version | License | Source tarball (SHA-256) | Vendored file (SHA-256, bytes) |
|
|
55
|
+
| --- | --- | --- | --- | --- |
|
|
56
|
+
| Paged.js | 0.4.3 | MIT | `pagedjs-0.4.3.tgz` (`a79baaa94d15cf952e6327950fa886ba7533bdce92194b677d9d1b4cce6c17c5`) | `pagedjs/paged.polyfill.min.js` (`f44e35a6d5106d819c3415fd38591de04d3834343c14e50a562b84257e204692`, 503181) |
|
|
57
|
+
| KaTeX | 0.19.0 | MIT | `katex-0.19.0.tgz` (`d8e49f2fea6eeed7cdae2cf4fd48e2f1d348758aa9e5740715e4533c2c96d1ee`) | `katex/katex.min.js` (`103a53763cc033bba8d175bf3f0ba597c3505c9b6747dd3f2c7bc2a6bfcc8ae7`, 272868); `katex/katex.min.css` (`d4ab5b8ee16989b070cdb0ea24bd6ad48fc8df1b787f280f29d3ae4f959f2c00`, 24793); `katex/fonts/*.woff2` (20 files, 263888 bytes; the CSS lists the woff and ttf fallbacks, which are not shipped) |
|
|
58
|
+
| Mermaid | 11.16.1 | MIT | `mermaid-11.16.1.tgz` (`ebd9885111092c78cefc79a76f6c1dc34ed5b834b02ae8f338227ce79c003de4`) | `mermaid/mermaid.min.js` (`18327bef70d96fb505fe7287d9f6a7362ebf07ff6576ddfaffb1a06f3e1a2954`, 3566058) |
|
|
59
|
+
|
|
60
|
+
`mermaid.min.js` is the upstream single-file bundle; it includes the components that Mermaid declares
|
|
61
|
+
as dependencies (among them d3, dagre-d3-es, Cytoscape and its layouts, DOMPurify, KaTeX, khroma, marked,
|
|
62
|
+
roughjs, stylis, ts-dedent, uuid, dayjs, es-toolkit, @braintree/sanitize-url and @upsetjs/venn.js)
|
|
63
|
+
under MIT, ISC, BSD-3-Clause, Apache-2.0 or MPL-2.0 terms; the bundle's own comments and the
|
|
64
|
+
tables for the same Mermaid release in the merman section above name them. citeproc-js is not used:
|
|
65
|
+
the HTML output formats citations with a small built-in formatter.
|
|
66
|
+
|
|
67
|
+
## Vendored citation styles (`styles/`)
|
|
68
|
+
|
|
69
|
+
| File | Source | License |
|
|
70
|
+
| --- | --- | --- |
|
|
71
|
+
| `apa.csl` | https://github.com/citation-style-language/styles (2026-10-04); **modified derivative**: the `date` and `date-issued-month-day` macros print month and day with their own prefix so that sources without a month no longer render `(2012,)` under Typst/Hayagriva. The change is noted in the style's `<info>` and header comment | CC BY-SA 3.0 |
|
|
72
|
+
| `ieee.csl` | https://github.com/citation-style-language/styles (copied unmodified, 2026-10-04) | CC BY-SA 3.0 |
|
|
73
|
+
| `icontec-ntc1486-2022.csl` | Written for this package from public NTC 1486:2022 library guides (provisional) | CC BY-SA 3.0 |
|
|
74
|
+
|
|
75
|
+
Each style keeps its `<rights>` notice. The license text is in `styles/LICENSE-CSL`; the
|
|
76
|
+
golden fixtures under `styles/fixtures/` are renderings of these styles and share their license.
|
|
77
|
+
|
|
78
|
+
## Typst CLI (not bundled)
|
|
79
|
+
|
|
80
|
+
The Typst command-line compiler (Apache-2.0, https://github.com/typst/typst) is not part of this
|
|
81
|
+
package. `/thesis:setup` downloads the pinned release from GitHub after verifying its SHA-256, or
|
|
82
|
+
you point `ALISIO_THESIS_TYPST` at your own copy.
|
|
83
|
+
|
|
84
|
+
## npm dependencies
|
|
85
|
+
|
|
86
|
+
| Package | License |
|
|
87
|
+
| --- | --- |
|
|
88
|
+
| markdown-it | MIT |
|
|
89
|
+
| markdown-it-footnote | MIT |
|
|
90
|
+
| yaml | ISC |
|
|
91
|
+
| vega | BSD-3-Clause |
|
|
92
|
+
| vega-lite | BSD-3-Clause |
|
|
93
|
+
| vega-interpreter | BSD-3-Clause |
|
|
94
|
+
| d3-dsv | ISC |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="flowchart" style="max-width: 886px; background-color: transparent;" viewBox="0 0 886 1294" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span{color:#333;}#my-svg .cluster-label span p{background-color:transparent;}#my-svg .label text,#my-svg span{fill:#333;color:#333;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .rough-node .label text,#my-svg .node .label text,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .rough-node .label,#my-svg .node .label,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePaths .path{stroke:#333333;stroke-width:1px;}#my-svg .flowchart-link{stroke:#333333;fill:none;}#my-svg .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#my-svg .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#my-svg .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#my-svg .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#my-svg .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span{color:#333;}#my-svg .node .collapsed-indicator{fill:#aaaa33;stroke:none;opacity:0.6;}#my-svg .node .collapsed-separator{stroke:#aaaa33;stroke-width:0.75px;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg rect.text{fill:none;stroke-width:0;}#my-svg .icon-shape,#my-svg .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#my-svg .icon-shape p,#my-svg .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#my-svg .icon-shape .label rect,#my-svg .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#my-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#my-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#my-svg .node .neo-node{stroke:#9370DB;}#my-svg [data-look="neo"].node rect,#my-svg [data-look="neo"].cluster rect,#my-svg [data-look="neo"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].swimlane.cluster rect{filter:none;}#my-svg [data-look="neo"].node path{stroke:#9370DB;stroke-width:1px;}#my-svg [data-look="neo"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node .neo-line path{stroke:#9370DB;filter:none;}#my-svg [data-look="neo"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node circle .state-start{fill:#000000;}#my-svg [data-look="neo"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker id="my-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"/></marker><marker id="my-svg_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"/></marker><g class="root"><g class="clusters"/><g class="edgePaths"><path d="M256.23,158L256.23,162.167C256.23,166.333,256.23,174.667,256.23,182.333C256.23,190,256.23,197,256.23,200.5L256.23,204" id="my-svg-L_Entry_Coord_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Entry_Coord_0" data-points="W3sieCI6MjU2LjIzMDQ2ODc1LCJ5IjoxNTh9LHsieCI6MjU2LjIzMDQ2ODc1LCJ5IjoxODN9LHsieCI6MjU2LjIzMDQ2ODc1LCJ5IjoyMDh9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M165.503,334L159.502,338.167C153.502,342.333,141.501,350.667,135.5,358.333C129.5,366,129.5,373,129.5,376.5L129.5,380" id="my-svg-L_Coord_Agents_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Coord_Agents_0" data-points="W3sieCI6MTY1LjUwMjk3NDA3NjcwNDU2LCJ5IjozMzR9LHsieCI6MTI5LjUsInkiOjM1OX0seyJ4IjoxMjkuNSwieSI6Mzg0fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M129.5,630L129.5,634.167C129.5,638.333,129.5,646.667,133.894,660.394C138.288,674.122,147.075,693.244,151.469,702.805L155.863,712.365" id="my-svg-L_Agents_Json_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Agents_Json_0" data-points="W3sieCI6MTI5LjUsInkiOjYzMH0seyJ4IjoxMjkuNSwieSI6NjU1fSx7IngiOjE1Ny41MzMwODgyMzUyOTQxMiwieSI6NzE2fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M227.421,716L232.223,705.833C237.024,695.667,246.627,675.333,251.429,640.5C256.23,605.667,256.23,556.333,256.23,507C256.23,457.667,256.23,408.333,256.23,380.167C256.23,352,256.23,345,256.23,341.5L256.23,338" id="my-svg-L_Json_Coord_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Json_Coord_0" data-points="W3sieCI6MjI3LjQyMTIxNDM4NDE5MTE2LCJ5Ijo3MTZ9LHsieCI6MjU2LjIzMDQ2ODc1LCJ5Ijo2NTV9LHsieCI6MjU2LjIzMDQ2ODc1LCJ5Ijo1MDd9LHsieCI6MjU2LjIzMDQ2ODc1LCJ5IjozNTl9LHsieCI6MjU2LjIzMDQ2ODc1LCJ5IjozMzR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M353.816,316.979L368.68,323.983C383.544,330.986,413.272,344.993,428.136,363.1C443,381.207,443,403.414,443,414.517L443,425.621" id="my-svg-L_Coord_Files_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Coord_Files_0" data-points="W3sieCI6MzUzLjgxNjQwNjI1LCJ5IjozMTYuOTc5NDYxNjUyNjg4Nn0seyJ4Ijo0NDMsInkiOjM1OX0seyJ4Ijo0NDMsInkiOjQyOS42MjA5MzM1MzI3MTQ4NH1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M443,584.379L443,596.149C443,607.919,443,631.46,443,646.73C443,662,443,669,443,672.5L443,676" id="my-svg-L_Files_Checks_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Files_Checks_0" data-points="W3sieCI6NDQzLCJ5Ijo1ODQuMzc5MDY2NDY3Mjg1Mn0seyJ4Ijo0NDMsInkiOjY1NX0seyJ4Ijo0NDMsInkiOjY4MH1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M443,902L443,906.167C443,910.333,443,918.667,443,926.333C443,934,443,941,443,944.5L443,948" id="my-svg-L_Checks_Doc_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Checks_Doc_0" data-points="W3sieCI6NDQzLCJ5Ijo5MDJ9LHsieCI6NDQzLCJ5Ijo5Mjd9LHsieCI6NDQzLCJ5Ijo5NTJ9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M443,1054L443,1058.167C443,1062.333,443,1070.667,443,1078.333C443,1086,443,1093,443,1096.5L443,1100" id="my-svg-L_Doc_Port_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Doc_Port_0" data-points="W3sieCI6NDQzLCJ5IjoxMDU0fSx7IngiOjQ0MywieSI6MTA3OX0seyJ4Ijo0NDMsInkiOjExMDR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M353,1144.565L310.5,1150.971C268,1157.377,183,1170.188,140.5,1180.094C98,1190,98,1197,98,1200.5L98,1204" id="my-svg-L_Port_Typst_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Port_Typst_0" data-points="W3sieCI6MzUzLCJ5IjoxMTQ0LjU2NTIxNzM5MTMwNDN9LHsieCI6OTgsInkiOjExODN9LHsieCI6OTgsInkiOjEyMDh9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M383.288,1158L374.074,1162.167C364.859,1166.333,346.429,1174.667,337.215,1182.333C328,1190,328,1197,328,1200.5L328,1204" id="my-svg-L_Port_Chrome_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Port_Chrome_0" data-points="W3sieCI6MzgzLjI4ODQ2MTUzODQ2MTU1LCJ5IjoxMTU4fSx7IngiOjMyOCwieSI6MTE4M30seyJ4IjozMjgsInkiOjEyMDh9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M502.712,1158L511.926,1162.167C521.141,1166.333,539.571,1174.667,548.785,1184.333C558,1194,558,1205,558,1210.5L558,1216" id="my-svg-L_Port_Html_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Port_Html_0" data-points="W3sieCI6NTAyLjcxMTUzODQ2MTUzODQ1LCJ5IjoxMTU4fSx7IngiOjU1OCwieSI6MTE4M30seyJ4Ijo1NTgsInkiOjEyMjB9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M533,1144.565L575.5,1150.971C618,1157.377,703,1170.188,745.5,1180.094C788,1190,788,1197,788,1200.5L788,1204" id="my-svg-L_Port_Docx_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Port_Docx_0" data-points="W3sieCI6NTMzLCJ5IjoxMTQ0LjU2NTIxNzM5MTMwNDN9LHsieCI6Nzg4LCJ5IjoxMTgzfSx7IngiOjc4OCwieSI6MTIwOH1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_Entry_Coord_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Coord_Agents_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Agents_Json_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Json_Coord_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Coord_Files_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Files_Checks_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Checks_Doc_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Doc_Port_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Port_Typst_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Port_Chrome_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Port_Html_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Port_Docx_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g></g><g class="nodes"><g class="node default" id="my-svg-flowchart-Entry-0" data-look="classic" transform="translate(256.23046875, 83)"><rect class="basic label-container" style="" x="-90" y="-75" width="180" height="150"/><g class="label" style="" transform="translate(-60, -60)"><rect/><foreignObject width="120" height="120"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 120px; text-align: center; width: 120px;"><span class="nodeLabel"><p>Entry points<br />/thesis:* commands, thesis_* tools,<br />alisio-thesis CLI</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Coord-1" data-look="classic" transform="translate(256.23046875, 271)"><rect class="basic label-container" style="" x="-97.5859375" y="-63" width="195.171875" height="126"/><g class="label" style="" transform="translate(-67.5859375, -48)"><rect/><foreignObject width="135.171875" height="96"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 120px; text-align: center; width: 120px;"><span class="nodeLabel"><p>ThesisCoordinator (TypeScript)<br />deterministic workflow authority</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Agents-3" data-look="classic" transform="translate(129.5, 507)"><rect class="basic label-container" style="" x="-90" y="-123" width="180" height="246"/><g class="label" style="" transform="translate(-60, -108)"><rect/><foreignObject width="120" height="216"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 120px; text-align: center; width: 120px;"><span class="nodeLabel"><p>Read-only child agents (8 roles)<br />coordinator, methodologist, librarian, evidence auditor,<br />architect, writer, editor, reviewer</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Json-5" data-look="classic" transform="translate(192, 791)"><rect class="basic label-container" style="" x="-90" y="-75" width="180" height="150"/><g class="label" style="" transform="translate(-60, -60)"><rect/><foreignObject width="120" height="120"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 120px; text-align: center; width: 120px;"><span class="nodeLabel"><p>Validated JSON envelopes<br />(untrusted until code accepts them)</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Files-9" data-look="classic" transform="translate(443, 507)"><path d="M0,14.58604530070294 a87.5390625,14.58604530070294 0,0,0 175.078125,0 a87.5390625,14.58604530070294 0,0,0 -175.078125,0 l0,125.58604530070293 a87.5390625,14.58604530070294 0,0,0 175.078125,0 l0,-125.58604530070293" class="basic label-container outer-path" style="" transform="translate(-87.5390625, -77.37906795105441)"/><g class="label" style="" transform="translate(-80.0390625, -38)"><rect/><foreignObject width="160.078125" height="96"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 120px; text-align: center; width: 120px;"><span class="nodeLabel"><p>Workspace artifacts<br />thesis/ and .alisio/thesis/state.json<br />only code writes files</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Checks-11" data-look="classic" transform="translate(443, 791)"><polygon points="111,0 222,-111 111,-222 0,-111" class="label-container" transform="translate(-110.5, 111)"/><g class="label" style="" transform="translate(-60, -36)"><rect/><foreignObject width="120" height="72"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 120px; text-align: center; width: 120px;"><span class="nodeLabel"><p>Deterministic checks<br />G0 to G10</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Doc-13" data-look="classic" transform="translate(443, 1003)"><rect class="basic label-container" style="" x="-90.0234375" y="-51" width="180.046875" height="102"/><g class="label" style="" transform="translate(-60.0234375, -36)"><rect/><foreignObject width="120.046875" height="72"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 120px; text-align: center; width: 120px;"><span class="nodeLabel"><p>ThesisDocument<br />neutral document model</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Port-15" data-look="classic" transform="translate(443, 1131)"><rect class="basic label-container" style="" x="-90" y="-27" width="180" height="54"/><g class="label" style="" transform="translate(-60, -12)"><rect/><foreignObject width="120" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: nowrap; line-height: 1.5; max-width: 120px; text-align: center; width: 120px;"><span class="nodeLabel"><p>Renderer port</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Typst-17" data-look="classic" transform="translate(98, 1247)"><rect class="basic label-container" style="" x="-90" y="-39" width="180" height="78"/><g class="label" style="" transform="translate(-60, -24)"><rect/><foreignObject width="120" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: nowrap; line-height: 1.5; max-width: 120px; text-align: center; width: 120px;"><span class="nodeLabel"><p>typst-pdf<br />PDF and PDF/A</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Chrome-19" data-look="classic" transform="translate(328, 1247)"><rect class="basic label-container" style="" x="-90" y="-39" width="180" height="78"/><g class="label" style="" transform="translate(-60, -24)"><rect/><foreignObject width="120" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: nowrap; line-height: 1.5; max-width: 120px; text-align: center; width: 120px;"><span class="nodeLabel"><p>chrome-pdf<br />fallback</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Html-21" data-look="classic" transform="translate(558, 1247)"><rect class="basic label-container" style="" x="-90" y="-27" width="180" height="54"/><g class="label" style="" transform="translate(-60, -12)"><rect/><foreignObject width="120" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: nowrap; line-height: 1.5; max-width: 120px; text-align: center; width: 120px;"><span class="nodeLabel"><p>html-preview</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Docx-23" data-look="classic" transform="translate(788, 1247)"><rect class="basic label-container" style="" x="-90" y="-39" width="180" height="78"/><g class="label" style="" transform="translate(-60, -24)"><rect/><foreignObject width="120" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: nowrap; line-height: 1.5; max-width: 120px; text-align: center; width: 120px;"><span class="nodeLabel"><p>docx<br />future adapter</p></span></div></foreignObject></g></g></g></g></g><defs><filter id="my-svg-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><defs><filter id="my-svg-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs></svg>
|