@prismer/runtime 2.2.55 → 2.2.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +574 -0
- package/apc/skills/releasing-test/SKILL.md +9 -0
- package/built-in-skills/agent-coordination/SKILL.md +21 -4
- package/built-in-skills/agent-meta/SKILL.md +11 -0
- package/built-in-skills/assets/SKILL.md +1 -1
- package/built-in-skills/canvas-design/SKILL.md +3 -3
- package/built-in-skills/canvas-design/canvas-fonts/IBMPlexSerif-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/InstrumentSerif-OFL.txt +93 -0
- package/built-in-skills/canvas-design/canvas-fonts/LICENSE-SOURCES.md +16 -0
- package/built-in-skills/claim-agent-ownership/SKILL.md +7 -3
- package/built-in-skills/claude-api/SKILL.md +1 -1
- package/built-in-skills/claude-api/python/claude-api/README.md +2 -2
- package/built-in-skills/claude-api/python/claude-api/tool-use.md +9 -5
- package/built-in-skills/claude-api/python/managed-agents/README.md +11 -1
- package/built-in-skills/claude-api/shared/error-codes.md +4 -4
- package/built-in-skills/claude-api/shared/managed-agents-client-patterns.md +4 -2
- package/built-in-skills/claude-api/shared/managed-agents-core.md +1 -2
- package/built-in-skills/claude-api/shared/managed-agents-events.md +41 -22
- package/built-in-skills/claude-api/shared/managed-agents-multiagent.md +5 -3
- package/built-in-skills/claude-api/shared/managed-agents-self-hosted-sandboxes.md +1 -1
- package/built-in-skills/claude-api/shared/managed-agents-tools.md +2 -3
- package/built-in-skills/claude-api/shared/model-migration.md +3 -3
- package/built-in-skills/claude-api/shared/models.md +1 -1
- package/built-in-skills/claude-api/typescript/claude-api/batches.md +1 -1
- package/built-in-skills/claude-api/typescript/claude-api/files-api.md +3 -1
- package/built-in-skills/claude-api/typescript/claude-api/tool-use.md +8 -2
- package/built-in-skills/claude-api/typescript/managed-agents/README.md +8 -2
- package/built-in-skills/codebase-design/SKILL.md +15 -1
- package/built-in-skills/codebase-design/references/requesting-code-review/GUIDE.md +291 -0
- package/built-in-skills/codebase-design/references/requesting-code-review/LICENSE +21 -0
- package/built-in-skills/codebase-design/references/requesting-code-review/LICENSE.superpowers +21 -0
- package/built-in-skills/codebase-design/references/requesting-code-review/NOTICE.md +37 -0
- package/built-in-skills/codebase-design/references/sdlc-review/GUIDE.md +130 -0
- package/built-in-skills/codebase-design/references/sdlc-review/LICENSE +21 -0
- package/built-in-skills/codebase-design/references/sdlc-review/NOTICE.md +17 -0
- package/built-in-skills/codebase-design/references/simplify-code/GUIDE.md +269 -0
- package/built-in-skills/codebase-design/references/simplify-code/LICENSE +21 -0
- package/built-in-skills/codebase-design/references/simplify-code/NOTICE.md +37 -0
- package/built-in-skills/competitor-intelligence/LICENSE +21 -0
- package/built-in-skills/competitor-intelligence/NOTICE.md +6 -0
- package/built-in-skills/competitor-intelligence/SKILL.md +125 -0
- package/built-in-skills/competitor-intelligence/scripts/watch_state.py +160 -0
- package/built-in-skills/conversation-compaction/SKILL.md +3 -0
- package/built-in-skills/council-creator/SKILL.md +4 -3
- package/built-in-skills/diagnosing-bugs/SKILL.md +12 -0
- package/built-in-skills/diagnosing-bugs/references/desktop-dom/GUIDE.md +64 -0
- package/built-in-skills/diagnosing-bugs/references/desktop-dom/LICENSE +21 -0
- package/built-in-skills/diagnosing-bugs/references/desktop-dom/NOTICE.md +17 -0
- package/built-in-skills/diagnosing-bugs/references/systematic-debugging/GUIDE.md +410 -0
- package/built-in-skills/diagnosing-bugs/references/systematic-debugging/LICENSE +21 -0
- package/built-in-skills/diagnosing-bugs/references/systematic-debugging/LICENSE.superpowers +21 -0
- package/built-in-skills/diagnosing-bugs/references/systematic-debugging/NOTICE.md +37 -0
- package/built-in-skills/doc-coauthoring/SKILL.md +6 -0
- package/built-in-skills/doc-coauthoring/references/humanizer/GUIDE.md +647 -0
- package/built-in-skills/doc-coauthoring/references/humanizer/LICENSE +21 -0
- package/built-in-skills/doc-coauthoring/references/humanizer/LICENSE.hermes +21 -0
- package/built-in-skills/doc-coauthoring/references/humanizer/PROVENANCE.md +7 -0
- package/built-in-skills/document-actions/LICENSE +21 -0
- package/built-in-skills/document-actions/NOTICE.md +21 -0
- package/built-in-skills/document-actions/SKILL.md +46 -0
- package/built-in-skills/evidence-citations/LICENSE +21 -0
- package/built-in-skills/evidence-citations/NOTICE.md +21 -0
- package/built-in-skills/evidence-citations/SKILL.md +46 -0
- package/built-in-skills/evidence-citations/references/citation-formats.md +68 -0
- package/built-in-skills/evidence-citations/references/grounding-rationale.md +64 -0
- package/built-in-skills/evidence-citations/scripts/sources.py +720 -0
- package/built-in-skills/frontend-design/SKILL.md +6 -0
- package/built-in-skills/frontend-design/references/claude-design/GUIDE.md +650 -0
- package/built-in-skills/frontend-design/references/claude-design/LICENSE +21 -0
- package/built-in-skills/frontend-design/references/claude-design/LICENSE.hermes +21 -0
- package/built-in-skills/frontend-design/references/claude-design/PROVENANCE.md +7 -0
- package/built-in-skills/image-generate/SKILL.md +5 -0
- package/built-in-skills/image-generate/scripts/generate-and-deliver.mjs +24 -3
- package/built-in-skills/mcp-builder/reference/evaluation.md +11 -2
- package/built-in-skills/mcp-builder/reference/node_mcp_server.md +34 -5
- package/built-in-skills/mcp-builder/reference/python_mcp_server.md +6 -2
- package/built-in-skills/mcp-builder/scripts/connections.py +1 -1
- package/built-in-skills/mcp-builder/scripts/evaluation.py +52 -34
- package/built-in-skills/mcp-builder/scripts/requirements.txt +2 -2
- package/built-in-skills/meeting-actions/LICENSE +21 -0
- package/built-in-skills/meeting-actions/NOTICE.md +21 -0
- package/built-in-skills/meeting-actions/SKILL.md +48 -0
- package/built-in-skills/memory/SKILL.md +27 -3
- package/built-in-skills/memory/references/llm-wiki/GUIDE.md +468 -0
- package/built-in-skills/memory/references/llm-wiki/LICENSE +21 -0
- package/built-in-skills/memory/references/llm-wiki/NOTICE.md +4 -0
- package/built-in-skills/memory/references/llm-wiki/scripts/lint_wiki.py +84 -0
- package/built-in-skills/memory/references/llm-wiki/scripts/requirements.txt +1 -0
- package/built-in-skills/memory/references/llm-wiki/templates/SCHEMA.md +19 -0
- package/built-in-skills/memory/references/llm-wiki/templates/index.md +9 -0
- package/built-in-skills/memory/references/llm-wiki/templates/log.md +4 -0
- package/built-in-skills/memory-dream/SKILL.md +8 -15
- package/built-in-skills/memory-import/SKILL.md +51 -0
- package/built-in-skills/office-artifacts/NOTICE.md +15 -0
- package/built-in-skills/office-artifacts/SKILL.md +20 -0
- package/built-in-skills/office-artifacts/references/RESOURCE-LIMITS.md +44 -0
- package/built-in-skills/office-artifacts/references/docx/GUIDE.md +196 -0
- package/built-in-skills/office-artifacts/references/docx/LICENSE +21 -0
- package/built-in-skills/office-artifacts/references/docx/NOTICE.md +21 -0
- package/built-in-skills/office-artifacts/references/docx/references/revisions-and-comments.md +88 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_comments.py +292 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_common.py +93 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_create.py +177 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_edit.py +250 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_read.py +169 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_revisions.py +149 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_template.py +70 -0
- package/built-in-skills/office-artifacts/references/docx/scripts/docx_validate.py +155 -0
- package/built-in-skills/office-artifacts/references/docx/tests/test_docx_skill.py +525 -0
- package/built-in-skills/office-artifacts/references/pdf/GUIDE.md +125 -0
- package/built-in-skills/office-artifacts/references/pdf/LICENSE +21 -0
- package/built-in-skills/office-artifacts/references/pdf/NOTICE.md +21 -0
- package/built-in-skills/office-artifacts/references/pdf/references/forms.md +99 -0
- package/built-in-skills/office-artifacts/references/pdf/references/nano-pdf-editing.md +40 -0
- package/built-in-skills/office-artifacts/references/pdf/references/ocr-extraction.md +165 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/_raster.py +87 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/extract_marker.py +95 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/extract_pymupdf.py +107 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_create.py +153 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_fill_form.py +97 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_form_layout.py +168 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_make_form.py +145 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_merge.py +50 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_meta.py +123 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_page_image.py +101 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_read.py +153 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_secure.py +71 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_split.py +86 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_stamp.py +145 -0
- package/built-in-skills/office-artifacts/references/pdf/scripts/pdf_watermark.py +51 -0
- package/built-in-skills/office-artifacts/references/pdf/tests/test_pdf_skill.py +414 -0
- package/built-in-skills/office-artifacts/references/powerpoint/GUIDE.md +220 -0
- package/built-in-skills/office-artifacts/references/powerpoint/LICENSE +21 -0
- package/built-in-skills/office-artifacts/references/powerpoint/NOTICE.md +21 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_create.py +214 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_edit.py +442 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_from_template.py +88 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_read.py +131 -0
- package/built-in-skills/office-artifacts/references/powerpoint/scripts/pptx_render.py +104 -0
- package/built-in-skills/office-artifacts/references/powerpoint/tests/test_powerpoint_skill.py +478 -0
- package/built-in-skills/office-artifacts/references/xlsx/GUIDE.md +196 -0
- package/built-in-skills/office-artifacts/references/xlsx/LICENSE +21 -0
- package/built-in-skills/office-artifacts/references/xlsx/NOTICE.md +21 -0
- package/built-in-skills/office-artifacts/references/xlsx/references/restructuring.md +74 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/csv_to_xlsx.py +108 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_create.py +259 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_edit.py +269 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_read.py +160 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_recalc.py +111 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_restructure.py +418 -0
- package/built-in-skills/office-artifacts/references/xlsx/scripts/xlsx_to_csv.py +69 -0
- package/built-in-skills/office-artifacts/references/xlsx/tests/test_xlsx_skill.py +542 -0
- package/built-in-skills/office-artifacts/tests/test_resource_regressions.py +272 -0
- package/built-in-skills/persona-generator/SKILL.md +9 -9
- package/built-in-skills/pkf-svg/SKILL.md +5 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/GUIDE.md +148 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/LICENSE +21 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/LICENSE.hermes +21 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/PROVENANCE.md +7 -0
- package/built-in-skills/pkf-svg/references/architecture-diagram/templates/template.html +345 -0
- package/built-in-skills/pkf-writing/SKILL.md +36 -14
- package/built-in-skills/prismer-airtable/LICENSE +21 -0
- package/built-in-skills/prismer-airtable/NOTICE.md +11 -0
- package/built-in-skills/prismer-airtable/SKILL.md +248 -0
- package/built-in-skills/prismer-airtable/scripts/airtable_client.py +76 -0
- package/built-in-skills/prismer-apple-notes/LICENSE +21 -0
- package/built-in-skills/prismer-apple-notes/NOTICE.md +17 -0
- package/built-in-skills/prismer-apple-notes/SKILL.md +118 -0
- package/built-in-skills/prismer-apple-notes/scripts/readiness.py +47 -0
- package/built-in-skills/prismer-apple-reminders/LICENSE +21 -0
- package/built-in-skills/prismer-apple-reminders/NOTICE.md +17 -0
- package/built-in-skills/prismer-apple-reminders/SKILL.md +155 -0
- package/built-in-skills/prismer-apple-reminders/scripts/readiness.py +47 -0
- package/built-in-skills/prismer-ascii-video/LICENSE +21 -0
- package/built-in-skills/prismer-ascii-video/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-ascii-video/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-ascii-video/README.md +290 -0
- package/built-in-skills/prismer-ascii-video/SKILL.md +252 -0
- package/built-in-skills/prismer-ascii-video/provenance/category-DESCRIPTION.md +3 -0
- package/built-in-skills/prismer-ascii-video/references/architecture.md +807 -0
- package/built-in-skills/prismer-ascii-video/references/composition.md +900 -0
- package/built-in-skills/prismer-ascii-video/references/effects.md +1877 -0
- package/built-in-skills/prismer-ascii-video/references/inputs.md +693 -0
- package/built-in-skills/prismer-ascii-video/references/optimization.md +688 -0
- package/built-in-skills/prismer-ascii-video/references/scenes.md +1018 -0
- package/built-in-skills/prismer-ascii-video/references/shaders.md +1408 -0
- package/built-in-skills/prismer-ascii-video/references/troubleshooting.md +360 -0
- package/built-in-skills/prismer-baoyu-infographic/LICENSE +21 -0
- package/built-in-skills/prismer-baoyu-infographic/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-baoyu-infographic/LICENSE.origin +21 -0
- package/built-in-skills/prismer-baoyu-infographic/PORT_NOTES.md +37 -0
- package/built-in-skills/prismer-baoyu-infographic/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-baoyu-infographic/SKILL.md +240 -0
- package/built-in-skills/prismer-baoyu-infographic/references/analysis-framework.md +182 -0
- package/built-in-skills/prismer-baoyu-infographic/references/base-prompt.md +43 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/bento-grid.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/binary-comparison.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/bridge.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/circular-flow.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/comic-strip.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/comparison-matrix.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/dashboard.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/dense-modules.md +72 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/funnel.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/hierarchical-layers.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/hub-spoke.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/iceberg.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/isometric-map.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/jigsaw.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/linear-progression.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/periodic-table.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/story-mountain.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/structural-breakdown.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/tree-branching.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/venn-diagram.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/layouts/winding-roadmap.md +41 -0
- package/built-in-skills/prismer-baoyu-infographic/references/structured-content-template.md +244 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/aged-academia.md +36 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/bold-graphic.md +36 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/chalkboard.md +61 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/claymation.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/corporate-memphis.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/craft-handmade.md +44 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/cyberpunk-neon.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/hand-drawn-edu.md +63 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/ikea-manual.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/kawaii.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/knolling.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/lego-brick.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/morandi-journal.md +60 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/origami.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/pixel-art.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/pop-laboratory.md +48 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/retro-pop-grid.md +47 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/storybook-watercolor.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/subway-map.md +29 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/technical-schematic.md +36 -0
- package/built-in-skills/prismer-baoyu-infographic/references/styles/ui-wireframe.md +29 -0
- package/built-in-skills/prismer-blocked-page-recovery/LICENSE +21 -0
- package/built-in-skills/prismer-blocked-page-recovery/NOTICE.md +17 -0
- package/built-in-skills/prismer-blocked-page-recovery/SKILL.md +158 -0
- package/built-in-skills/prismer-blocked-page-recovery/scripts/recover_page.py +311 -0
- package/built-in-skills/prismer-box/LICENSE +21 -0
- package/built-in-skills/prismer-box/NOTICE.md +11 -0
- package/built-in-skills/prismer-box/SKILL.md +147 -0
- package/built-in-skills/prismer-box/references/bulk-operations.md +43 -0
- package/built-in-skills/prismer-box/references/cli-guide.md +133 -0
- package/built-in-skills/prismer-box/references/content-workflows.md +86 -0
- package/built-in-skills/prismer-box/references/hubs.md +77 -0
- package/built-in-skills/prismer-box/references/oauth-setup.md +92 -0
- package/built-in-skills/prismer-box/references/rest-api.md +37 -0
- package/built-in-skills/prismer-box/references/sdk-development.md +85 -0
- package/built-in-skills/prismer-box/references/search-and-ai.md +147 -0
- package/built-in-skills/prismer-box/references/troubleshooting.md +33 -0
- package/built-in-skills/prismer-box/references/webhooks-and-events.md +43 -0
- package/built-in-skills/prismer-codebase-inspection/LICENSE +21 -0
- package/built-in-skills/prismer-codebase-inspection/NOTICE.md +17 -0
- package/built-in-skills/prismer-codebase-inspection/SKILL.md +141 -0
- package/built-in-skills/prismer-computer-use/LICENSE +21 -0
- package/built-in-skills/prismer-computer-use/NOTICE.md +17 -0
- package/built-in-skills/prismer-computer-use/SKILL.md +372 -0
- package/built-in-skills/prismer-design-md/LICENSE +21 -0
- package/built-in-skills/prismer-design-md/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-design-md/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-design-md/SKILL.md +227 -0
- package/built-in-skills/prismer-design-md/templates/starter.md +99 -0
- package/built-in-skills/prismer-email-inbox-triage/LICENSE +21 -0
- package/built-in-skills/prismer-email-inbox-triage/NOTICE.md +11 -0
- package/built-in-skills/prismer-email-inbox-triage/SKILL.md +116 -0
- package/built-in-skills/prismer-findmy/LICENSE +21 -0
- package/built-in-skills/prismer-findmy/NOTICE.md +17 -0
- package/built-in-skills/prismer-findmy/SKILL.md +150 -0
- package/built-in-skills/prismer-findmy/scripts/readiness.py +47 -0
- package/built-in-skills/prismer-gif-search/LICENSE +21 -0
- package/built-in-skills/prismer-gif-search/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-gif-search/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-gif-search/SKILL.md +97 -0
- package/built-in-skills/prismer-gif-search/scripts/tenor.py +81 -0
- package/built-in-skills/prismer-github/LICENSE +21 -0
- package/built-in-skills/prismer-github/NOTICE.md +17 -0
- package/built-in-skills/prismer-github/SKILL.md +74 -0
- package/built-in-skills/prismer-github/references/auth.md +91 -0
- package/built-in-skills/prismer-github/references/ci-troubleshooting.md +193 -0
- package/built-in-skills/prismer-github/references/code-review.md +465 -0
- package/built-in-skills/prismer-github/references/conventional-commits.md +81 -0
- package/built-in-skills/prismer-github/references/github-api-cheatsheet.md +177 -0
- package/built-in-skills/prismer-github/references/issue-to-pr.md +74 -0
- package/built-in-skills/prismer-github/references/issues.md +336 -0
- package/built-in-skills/prismer-github/references/pr-workflow.md +346 -0
- package/built-in-skills/prismer-github/references/repo-management.md +484 -0
- package/built-in-skills/prismer-github/references/review-output-template.md +84 -0
- package/built-in-skills/prismer-github/scripts/ensure-gh.py +132 -0
- package/built-in-skills/prismer-github/scripts/gh-env.sh +25 -0
- package/built-in-skills/prismer-github/scripts/git-credential-token.py +68 -0
- package/built-in-skills/prismer-github/scripts/github-api.py +71 -0
- package/built-in-skills/prismer-github/scripts/github-context.py +28 -0
- package/built-in-skills/prismer-github/templates/bug-report.md +35 -0
- package/built-in-skills/prismer-github/templates/feature-request.md +31 -0
- package/built-in-skills/prismer-github/templates/pr-body-bugfix.md +35 -0
- package/built-in-skills/prismer-github/templates/pr-body-feature.md +33 -0
- package/built-in-skills/prismer-google-workspace/LICENSE +21 -0
- package/built-in-skills/prismer-google-workspace/NOTICE.md +11 -0
- package/built-in-skills/prismer-google-workspace/SKILL.md +369 -0
- package/built-in-skills/prismer-google-workspace/references/daily-brief.md +65 -0
- package/built-in-skills/prismer-google-workspace/references/gmail-search-syntax.md +63 -0
- package/built-in-skills/prismer-google-workspace/scripts/_hermes_home.py +17 -0
- package/built-in-skills/prismer-google-workspace/scripts/_private_state.py +39 -0
- package/built-in-skills/prismer-google-workspace/scripts/google_api.py +1339 -0
- package/built-in-skills/prismer-google-workspace/scripts/gws_bridge.py +121 -0
- package/built-in-skills/prismer-google-workspace/scripts/setup.py +563 -0
- package/built-in-skills/prismer-google-workspace/tests/test_productivity_regressions.py +214 -0
- package/built-in-skills/prismer-hermes-agent/LICENSE +21 -0
- package/built-in-skills/prismer-hermes-agent/NOTICE.md +17 -0
- package/built-in-skills/prismer-hermes-agent/SKILL.md +247 -0
- package/built-in-skills/prismer-hermes-agent/references/background-systems.md +108 -0
- package/built-in-skills/prismer-hermes-agent/references/cli-reference.md +158 -0
- package/built-in-skills/prismer-hermes-agent/references/configuration.md +96 -0
- package/built-in-skills/prismer-hermes-agent/references/contributor-guide.md +151 -0
- package/built-in-skills/prismer-hermes-agent/references/delegate-task-concurrency-diagnosis.md +47 -0
- package/built-in-skills/prismer-hermes-agent/references/desktop-plugins.md +215 -0
- package/built-in-skills/prismer-hermes-agent/references/native-mcp.md +351 -0
- package/built-in-skills/prismer-hermes-agent/references/petdex.md +82 -0
- package/built-in-skills/prismer-hermes-agent/references/portal-auth-for-third-party-apps.md +135 -0
- package/built-in-skills/prismer-hermes-agent/references/project-context-files.md +55 -0
- package/built-in-skills/prismer-hermes-agent/references/providers-and-models.md +81 -0
- package/built-in-skills/prismer-hermes-agent/references/security-privacy.md +73 -0
- package/built-in-skills/prismer-hermes-agent/references/slash-commands.md +119 -0
- package/built-in-skills/prismer-hermes-agent/references/themes.md +134 -0
- package/built-in-skills/prismer-hermes-agent/references/troubleshooting.md +87 -0
- package/built-in-skills/prismer-hermes-agent/references/tui-widgets.md +144 -0
- package/built-in-skills/prismer-hermes-agent/references/webhooks.md +219 -0
- package/built-in-skills/prismer-hermes-agent/references/windows-quirks.md +64 -0
- package/built-in-skills/prismer-hermes-agent/templates/clock.mjs +51 -0
- package/built-in-skills/prismer-hermes-agent/templates/plugin.js +97 -0
- package/built-in-skills/prismer-hermes-agent/templates/skin.yaml +49 -0
- package/built-in-skills/prismer-himalaya/LICENSE +21 -0
- package/built-in-skills/prismer-himalaya/NOTICE.md +11 -0
- package/built-in-skills/prismer-himalaya/SKILL.md +340 -0
- package/built-in-skills/prismer-himalaya/references/configuration.md +227 -0
- package/built-in-skills/prismer-himalaya/references/message-composition.md +206 -0
- package/built-in-skills/prismer-himalaya/scripts/compose_draft.py +48 -0
- package/built-in-skills/prismer-im-collab/SKILL.md +1 -1
- package/built-in-skills/prismer-imessage/LICENSE +21 -0
- package/built-in-skills/prismer-imessage/NOTICE.md +17 -0
- package/built-in-skills/prismer-imessage/SKILL.md +128 -0
- package/built-in-skills/prismer-imessage/scripts/readiness.py +47 -0
- package/built-in-skills/prismer-manim-video/LICENSE +21 -0
- package/built-in-skills/prismer-manim-video/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-manim-video/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-manim-video/README.md +23 -0
- package/built-in-skills/prismer-manim-video/SKILL.md +279 -0
- package/built-in-skills/prismer-manim-video/references/animation-design-thinking.md +161 -0
- package/built-in-skills/prismer-manim-video/references/animations.md +282 -0
- package/built-in-skills/prismer-manim-video/references/camera-and-3d.md +135 -0
- package/built-in-skills/prismer-manim-video/references/decorations.md +202 -0
- package/built-in-skills/prismer-manim-video/references/equations.md +216 -0
- package/built-in-skills/prismer-manim-video/references/graphs-and-data.md +163 -0
- package/built-in-skills/prismer-manim-video/references/mobjects.md +333 -0
- package/built-in-skills/prismer-manim-video/references/paper-explainer.md +255 -0
- package/built-in-skills/prismer-manim-video/references/production-quality.md +190 -0
- package/built-in-skills/prismer-manim-video/references/rendering.md +187 -0
- package/built-in-skills/prismer-manim-video/references/scene-planning.md +118 -0
- package/built-in-skills/prismer-manim-video/references/troubleshooting.md +135 -0
- package/built-in-skills/prismer-manim-video/references/updaters-and-trackers.md +260 -0
- package/built-in-skills/prismer-manim-video/references/visual-design.md +124 -0
- package/built-in-skills/prismer-manim-video/scripts/setup.sh +15 -0
- package/built-in-skills/prismer-maps/LICENSE +21 -0
- package/built-in-skills/prismer-maps/NOTICE.md +11 -0
- package/built-in-skills/prismer-maps/SKILL.md +240 -0
- package/built-in-skills/prismer-maps/scripts/maps_client.py +1324 -0
- package/built-in-skills/prismer-node-inspect-debugger/LICENSE +21 -0
- package/built-in-skills/prismer-node-inspect-debugger/NOTICE.md +17 -0
- package/built-in-skills/prismer-node-inspect-debugger/SKILL.md +347 -0
- package/built-in-skills/prismer-notion/LICENSE +21 -0
- package/built-in-skills/prismer-notion/NOTICE.md +11 -0
- package/built-in-skills/prismer-notion/SKILL.md +495 -0
- package/built-in-skills/prismer-notion/references/block-types.md +112 -0
- package/built-in-skills/prismer-obsidian/LICENSE +21 -0
- package/built-in-skills/prismer-obsidian/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-obsidian/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-obsidian/SKILL.md +80 -0
- package/built-in-skills/prismer-obsidian/provenance/category-DESCRIPTION.md +3 -0
- package/built-in-skills/prismer-obsidian/scripts/write_note.py +84 -0
- package/built-in-skills/prismer-p5js/LICENSE +21 -0
- package/built-in-skills/prismer-p5js/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-p5js/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-p5js/README.md +64 -0
- package/built-in-skills/prismer-p5js/SKILL.md +574 -0
- package/built-in-skills/prismer-p5js/references/animation.md +439 -0
- package/built-in-skills/prismer-p5js/references/color-systems.md +355 -0
- package/built-in-skills/prismer-p5js/references/core-api.md +410 -0
- package/built-in-skills/prismer-p5js/references/export-pipeline.md +534 -0
- package/built-in-skills/prismer-p5js/references/interaction.md +398 -0
- package/built-in-skills/prismer-p5js/references/shapes-and-geometry.md +300 -0
- package/built-in-skills/prismer-p5js/references/troubleshooting.md +532 -0
- package/built-in-skills/prismer-p5js/references/typography.md +302 -0
- package/built-in-skills/prismer-p5js/references/visual-effects.md +905 -0
- package/built-in-skills/prismer-p5js/references/webgl-and-3d.md +423 -0
- package/built-in-skills/prismer-p5js/scripts/export-frames.js +91 -0
- package/built-in-skills/prismer-p5js/scripts/render.sh +113 -0
- package/built-in-skills/prismer-p5js/scripts/serve.sh +25 -0
- package/built-in-skills/prismer-p5js/scripts/setup.sh +87 -0
- package/built-in-skills/prismer-p5js/templates/viewer.html +401 -0
- package/built-in-skills/prismer-popular-web-designs/LICENSE +21 -0
- package/built-in-skills/prismer-popular-web-designs/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-popular-web-designs/LICENSE.origin +21 -0
- package/built-in-skills/prismer-popular-web-designs/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-popular-web-designs/SKILL.md +218 -0
- package/built-in-skills/prismer-popular-web-designs/templates/airbnb.md +259 -0
- package/built-in-skills/prismer-popular-web-designs/templates/airtable.md +102 -0
- package/built-in-skills/prismer-popular-web-designs/templates/apple.md +326 -0
- package/built-in-skills/prismer-popular-web-designs/templates/bmw.md +193 -0
- package/built-in-skills/prismer-popular-web-designs/templates/cal.md +272 -0
- package/built-in-skills/prismer-popular-web-designs/templates/claude.md +325 -0
- package/built-in-skills/prismer-popular-web-designs/templates/clay.md +317 -0
- package/built-in-skills/prismer-popular-web-designs/templates/clickhouse.md +294 -0
- package/built-in-skills/prismer-popular-web-designs/templates/cohere.md +279 -0
- package/built-in-skills/prismer-popular-web-designs/templates/coinbase.md +142 -0
- package/built-in-skills/prismer-popular-web-designs/templates/composio.md +320 -0
- package/built-in-skills/prismer-popular-web-designs/templates/cursor.md +322 -0
- package/built-in-skills/prismer-popular-web-designs/templates/elevenlabs.md +278 -0
- package/built-in-skills/prismer-popular-web-designs/templates/expo.md +294 -0
- package/built-in-skills/prismer-popular-web-designs/templates/figma.md +233 -0
- package/built-in-skills/prismer-popular-web-designs/templates/framer.md +259 -0
- package/built-in-skills/prismer-popular-web-designs/templates/hashicorp.md +291 -0
- package/built-in-skills/prismer-popular-web-designs/templates/ibm.md +345 -0
- package/built-in-skills/prismer-popular-web-designs/templates/intercom.md +159 -0
- package/built-in-skills/prismer-popular-web-designs/templates/kraken.md +138 -0
- package/built-in-skills/prismer-popular-web-designs/templates/linear.app.md +380 -0
- package/built-in-skills/prismer-popular-web-designs/templates/lovable.md +311 -0
- package/built-in-skills/prismer-popular-web-designs/templates/minimax.md +270 -0
- package/built-in-skills/prismer-popular-web-designs/templates/mintlify.md +339 -0
- package/built-in-skills/prismer-popular-web-designs/templates/miro.md +121 -0
- package/built-in-skills/prismer-popular-web-designs/templates/mistral.ai.md +274 -0
- package/built-in-skills/prismer-popular-web-designs/templates/mongodb.md +279 -0
- package/built-in-skills/prismer-popular-web-designs/templates/notion.md +322 -0
- package/built-in-skills/prismer-popular-web-designs/templates/nvidia.md +306 -0
- package/built-in-skills/prismer-popular-web-designs/templates/ollama.md +280 -0
- package/built-in-skills/prismer-popular-web-designs/templates/opencode.ai.md +294 -0
- package/built-in-skills/prismer-popular-web-designs/templates/pinterest.md +243 -0
- package/built-in-skills/prismer-popular-web-designs/templates/posthog.md +269 -0
- package/built-in-skills/prismer-popular-web-designs/templates/raycast.md +281 -0
- package/built-in-skills/prismer-popular-web-designs/templates/replicate.md +274 -0
- package/built-in-skills/prismer-popular-web-designs/templates/resend.md +316 -0
- package/built-in-skills/prismer-popular-web-designs/templates/revolut.md +198 -0
- package/built-in-skills/prismer-popular-web-designs/templates/runwayml.md +257 -0
- package/built-in-skills/prismer-popular-web-designs/templates/sanity.md +370 -0
- package/built-in-skills/prismer-popular-web-designs/templates/sentry.md +275 -0
- package/built-in-skills/prismer-popular-web-designs/templates/spacex.md +207 -0
- package/built-in-skills/prismer-popular-web-designs/templates/spotify.md +259 -0
- package/built-in-skills/prismer-popular-web-designs/templates/stripe.md +335 -0
- package/built-in-skills/prismer-popular-web-designs/templates/supabase.md +268 -0
- package/built-in-skills/prismer-popular-web-designs/templates/superhuman.md +265 -0
- package/built-in-skills/prismer-popular-web-designs/templates/together.ai.md +276 -0
- package/built-in-skills/prismer-popular-web-designs/templates/uber.md +308 -0
- package/built-in-skills/prismer-popular-web-designs/templates/vercel.md +323 -0
- package/built-in-skills/prismer-popular-web-designs/templates/voltagent.md +336 -0
- package/built-in-skills/prismer-popular-web-designs/templates/warp.md +266 -0
- package/built-in-skills/prismer-popular-web-designs/templates/webflow.md +105 -0
- package/built-in-skills/prismer-popular-web-designs/templates/wise.md +186 -0
- package/built-in-skills/prismer-popular-web-designs/templates/x.ai.md +270 -0
- package/built-in-skills/prismer-popular-web-designs/templates/zapier.md +341 -0
- package/built-in-skills/prismer-product-price-monitor/LICENSE +21 -0
- package/built-in-skills/prismer-product-price-monitor/NOTICE.md +11 -0
- package/built-in-skills/prismer-product-price-monitor/SKILL.md +97 -0
- package/built-in-skills/prismer-product-price-monitor/scripts/watch_state.py +116 -0
- package/built-in-skills/prismer-python-debugpy/LICENSE +21 -0
- package/built-in-skills/prismer-python-debugpy/NOTICE.md +17 -0
- package/built-in-skills/prismer-python-debugpy/SKILL.md +377 -0
- package/built-in-skills/prismer-python-debugpy/scripts/dap_client.py +68 -0
- package/built-in-skills/prismer-songsee/LICENSE +21 -0
- package/built-in-skills/prismer-songsee/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-songsee/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-songsee/SKILL.md +91 -0
- package/built-in-skills/prismer-songwriting-and-ai-music/LICENSE +21 -0
- package/built-in-skills/prismer-songwriting-and-ai-music/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-songwriting-and-ai-music/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-songwriting-and-ai-music/SKILL.md +317 -0
- package/built-in-skills/prismer-spike/LICENSE +21 -0
- package/built-in-skills/prismer-spike/LICENSE.gsd +21 -0
- package/built-in-skills/prismer-spike/NOTICE.md +17 -0
- package/built-in-skills/prismer-spike/SKILL.md +212 -0
- package/built-in-skills/prismer-teams-meeting-pipeline/LICENSE +21 -0
- package/built-in-skills/prismer-teams-meeting-pipeline/NOTICE.md +11 -0
- package/built-in-skills/prismer-teams-meeting-pipeline/SKILL.md +156 -0
- package/built-in-skills/prismer-xurl/LICENSE +21 -0
- package/built-in-skills/prismer-xurl/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-xurl/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-xurl/SKILL.md +444 -0
- package/built-in-skills/prismer-xurl/provenance/category-DESCRIPTION.md +3 -0
- package/built-in-skills/prismer-youtube-content/LICENSE +21 -0
- package/built-in-skills/prismer-youtube-content/LICENSE.hermes +21 -0
- package/built-in-skills/prismer-youtube-content/PROVENANCE.md +7 -0
- package/built-in-skills/prismer-youtube-content/SKILL.md +86 -0
- package/built-in-skills/prismer-youtube-content/provenance/category-DESCRIPTION.md +3 -0
- package/built-in-skills/prismer-youtube-content/references/output-formats.md +56 -0
- package/built-in-skills/prismer-youtube-content/scripts/fetch_transcript.py +146 -0
- package/built-in-skills/research-arxiv/LICENSE +21 -0
- package/built-in-skills/research-arxiv/NOTICE.md +4 -0
- package/built-in-skills/research-arxiv/SKILL.md +263 -0
- package/built-in-skills/research-arxiv/scripts/search_arxiv.py +111 -0
- package/built-in-skills/role-builder/SKILL.md +7 -1
- package/built-in-skills/role-builder/scripts/author-role.mjs +23 -7
- package/built-in-skills/role-builder/scripts/ingest-role.mjs +15 -117
- package/built-in-skills/role-builder/scripts/instantiate-and-run.mjs +15 -1
- package/built-in-skills/role-builder/scripts/operation-harness.mjs +6 -4
- package/built-in-skills/skill-creator/LICENSE.prismer +21 -0
- package/built-in-skills/skill-creator/NOTICE.md +18 -0
- package/built-in-skills/skill-creator/SKILL.md +20 -1
- package/built-in-skills/skill-creator/eval-viewer/generate_review.py +20 -31
- package/built-in-skills/skill-creator/eval-viewer/viewer.html +35 -23
- package/built-in-skills/skill-creator/references/hermes-agent-skill-authoring/GUIDE.md +220 -0
- package/built-in-skills/skill-creator/references/hermes-agent-skill-authoring/LICENSE +21 -0
- package/built-in-skills/{skill-authoring/SKILL.md → skill-creator/references/skill-authoring/GUIDE.md} +1 -1
- package/built-in-skills/{skill-builder/SKILL.md → skill-creator/references/skill-builder/GUIDE.md} +8 -12
- package/built-in-skills/skill-creator/references/skill-builder/scripts/ingest.mjs +93 -0
- package/built-in-skills/skill-creator/scripts/aggregate_benchmark.py +3 -2
- package/built-in-skills/skill-creator/scripts/import-library.mjs +30 -7
- package/built-in-skills/skill-creator/scripts/improve_description.py +14 -16
- package/built-in-skills/skill-creator/scripts/package_skill.py +16 -9
- package/built-in-skills/skill-creator/scripts/quick_validate.py +22 -5
- package/built-in-skills/skill-creator/scripts/run_eval.py +63 -144
- package/built-in-skills/skill-creator/scripts/run_loop.py +24 -16
- package/built-in-skills/slack-gif-creator/core/gif_builder.py +13 -2
- package/built-in-skills/slack-gif-creator/core/validators.py +17 -7
- package/built-in-skills/tasks/SKILL.md +2 -2
- package/built-in-skills/tdd/SKILL.md +7 -0
- package/built-in-skills/tdd/references/test-driven-development/GUIDE.md +356 -0
- package/built-in-skills/tdd/references/test-driven-development/LICENSE +21 -0
- package/built-in-skills/tdd/references/test-driven-development/LICENSE.superpowers +21 -0
- package/built-in-skills/tdd/references/test-driven-development/NOTICE.md +37 -0
- package/built-in-skills/team/SKILL.md +1 -1
- package/built-in-skills/web-artifacts-builder/SKILL.md +3 -3
- package/built-in-skills/web-artifacts-builder/scripts/bundle-artifact.sh +9 -7
- package/built-in-skills/web-artifacts-builder/scripts/init-artifact.sh +28 -55
- package/built-in-skills/webapp-qa/LICENSE +21 -0
- package/built-in-skills/webapp-qa/NOTICE.md +37 -0
- package/built-in-skills/webapp-qa/SKILL.md +41 -0
- package/built-in-skills/webapp-qa/references/dogfood/GUIDE.md +161 -0
- package/built-in-skills/webapp-qa/references/issue-taxonomy.md +109 -0
- package/built-in-skills/webapp-qa/templates/dogfood-report-template.md +86 -0
- package/built-in-skills/webapp-testing/SKILL.md +9 -2
- package/built-in-skills/webapp-testing/examples/console_logging.py +10 -4
- package/built-in-skills/webapp-testing/examples/element_discovery.py +11 -4
- package/built-in-skills/webapp-testing/examples/static_html_automation.py +14 -9
- package/built-in-skills/webapp-testing/scripts/with_server.py +34 -10
- package/built-in-skills/weekly-review/LICENSE +21 -0
- package/built-in-skills/weekly-review/NOTICE.md +21 -0
- package/built-in-skills/weekly-review/SKILL.md +49 -0
- package/components/eaas-pi-components.manifest.json +37 -0
- package/dist/cli.cjs +7017 -3340
- package/dist/cli.js +6631 -2936
- package/dist/index.cjs +7863 -3830
- package/dist/index.d.cts +459 -5
- package/dist/index.d.ts +459 -5
- package/dist/index.js +7106 -3064
- package/package.json +7 -2
- package/plugins/memory/prismer/__init__.py +4 -0
- package/plugins/memory/prismer/tool-schemas.generated.json +8 -0
- package/built-in-skills/skill-builder/scripts/ingest.mjs +0 -265
- package/built-in-skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- /package/built-in-skills/{document-generation/SKILL.md → office-artifacts/references/document-generation/GUIDE.md} +0 -0
- /package/built-in-skills/{skill-authoring/skill.json → skill-creator/references/skill-authoring/draft-contract.json} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog — @prismer/runtime
|
|
2
2
|
|
|
3
|
+
## 2.2.62 — 2026-09-23
|
|
4
|
+
|
|
5
|
+
- **Session recall + grant-aware recall policy**:daemon 新增
|
|
6
|
+
`recall-policy-provider` / `session-recall`(会话记忆召回并入
|
|
7
|
+
`[Memory Context]` 的 `[Session Recall]` 段,保留 `via:'grant:<id>'` /
|
|
8
|
+
`sourceWorkspaceId` 授权来源标注)+ fallback 集成测试。
|
|
9
|
+
- **Skill availability / loader / sync 收紧**:`skill-availability` 独立模块、
|
|
10
|
+
skill loader/source-resolution/sync 扩展与 sync rejection、slash 平台
|
|
11
|
+
toolsets 测试加固。
|
|
12
|
+
- **Hermes native skill projection**:`native-skill-projection`(Hermes 原生
|
|
13
|
+
skill 装载投影)+ 投影测试。
|
|
14
|
+
- **Turn protocol/runner 扩展** 与 pi components manifest
|
|
15
|
+
(`eaas-pi-components.manifest.json`)。
|
|
16
|
+
- 镜像/载荷对齐:Hermes v2026.9.21(S6 commentary 交付门),
|
|
17
|
+
`infra/sandbox-image` 与 desktop engine payload 同步(本包不进 image
|
|
18
|
+
fingerprint,随 OTA bundle 分发)。
|
|
19
|
+
|
|
3
20
|
## 2.2.13 — 2026-08-17
|
|
4
21
|
|
|
5
22
|
- ACS boot recovery fixes (merged via fix/acs-boot-recovery): manifest Pod
|
|
@@ -11,6 +28,563 @@
|
|
|
11
28
|
|
|
12
29
|
## Unreleased
|
|
13
30
|
|
|
31
|
+
- Sandbox manager executes directly when already running as the target non-root
|
|
32
|
+
user, retaining sudo for cross-user launches. Restricted EaaS carriers use
|
|
33
|
+
image-prepared workspace, recipe and manager state directories without privilege escalation.
|
|
34
|
+
|
|
35
|
+
- Add a scoped `asset-ingest` maintenance envelope to the one-shot turn runner:
|
|
36
|
+
exact task/run/source binding, no chat history or tool grants, and bounded,
|
|
37
|
+
digest-checked semantic products. Advertise `maintenance.assetIngest: 1` in
|
|
38
|
+
turn capabilities. Cloud admission/egress and final installed-bundle acceptance
|
|
39
|
+
remain required; a synthetic engine test is not provider execution evidence.
|
|
40
|
+
|
|
41
|
+
- EaaS one-shot turns now seed validated conversation history into the real PI session, preserving principal images and assistant text without replaying historical tool calls. Previously the envelope history was ignored.
|
|
42
|
+
- Add `turn capabilities` for explicit Cloud compatibility checks, and enforce shared history/image count and decoded-byte limits. Old bundles must not silently accept history-aware turns.
|
|
43
|
+
- Local Runtime regression is recorded separately from signed-bundle deployment and real two-turn model acceptance; the latter remain required before release.
|
|
44
|
+
|
|
45
|
+
### EaaS PI core HITL guidance and tool policy
|
|
46
|
+
|
|
47
|
+
- Preserve the Cloud system prompt and add EaaS-only HITL `eaas-question`
|
|
48
|
+
guidance and ACL boundary instructions; prompt guidance is not authorization.
|
|
49
|
+
- Add a PI core execution gate for bound tools: deny takes precedence, an empty
|
|
50
|
+
allow list denies all tools, and an optional trusted-host `authorize` callback
|
|
51
|
+
permits execution only on `true`, failing closed on errors.
|
|
52
|
+
- Wire EaaS turn tool declarations into the runner's allow/deny policy, including
|
|
53
|
+
explicitly disabled tools. Absent declarations retain legacy default tools;
|
|
54
|
+
an explicit empty declaration list allows none.
|
|
55
|
+
- These declarations are a per-turn snapshot, not a dynamic Cloud ACL/HITL
|
|
56
|
+
bridge. Allowing bash does not enforce a cwd jail or make the environment
|
|
57
|
+
read-only when write/edit tools are denied.
|
|
58
|
+
|
|
59
|
+
### Workspace conversation/task overhaul — spec 11 closure
|
|
60
|
+
|
|
61
|
+
- **Runs dispatch durability**:daemon 派发链完成 spec 11 T3/T4 收口——comment
|
|
62
|
+
续跑、Phase A 判型闸、一次性 nonce、run 级 dispatch outbox 重投、10 次重试预算与
|
|
63
|
+
`dispatch-undelivered` 终态可见性,避免 run 已生成但 chat 侧静默丢派发。
|
|
64
|
+
- **Hermes/tool attribution honesty**:缺失 `detail.output` 的工具步骤不再渲染为空白,
|
|
65
|
+
统一显示 `[output not forwarded]`;有真实 output 的步骤保持原样。
|
|
66
|
+
- **Org collaboration soul carrier**:内置身份上下文新增 `org-collaboration` section,
|
|
67
|
+
`team-manager` 升级到 2.2.0、`personal-assistant` 升级到 1.1.0,并保持 catalog /
|
|
68
|
+
runtime role template / source role template 三处 byte-identical。
|
|
69
|
+
- **Task context for OKR execution**:dispatch context 新增 `[Active Key Results]`,
|
|
70
|
+
与 `[Active Goals]` / `[Active Objectives]` 同源注入,用于长线任务的 KR
|
|
71
|
+
baseline/target/current 验收依据。
|
|
72
|
+
- **Grant-aware memory recall**:runtime `memory_search` / `memory_load` 接受
|
|
73
|
+
`sourceWorkspaceId`,session recall 可将授权来源并入 `[Memory Context]` 的
|
|
74
|
+
`[Session Recall]` 段,并保留 `via:'grant:<id>'` / `sourceWorkspaceId` 标注。
|
|
75
|
+
|
|
76
|
+
### Hermes — S5 上下文连续性三件(docs/organization/specs/05 Task 1-3,daemon 侧)
|
|
77
|
+
|
|
78
|
+
- **轮换播种回读(§3.4-1a / Task 1)**:`sessions-dispatcher` 抽出
|
|
79
|
+
`fetchSessionTranscript`(`GET /api/sessions/{id}/messages`,保留
|
|
80
|
+
`X-Hermes-Session-Key` + 5s `AbortSignal.timeout`,任何失败 resolve `[]`),
|
|
81
|
+
由抢救捞回与轮换播种共用。轮换铸新 session 且存在 previousSessionId 时回读老
|
|
82
|
+
transcript 尾部(`RESEED_TAIL_ROWS=8`),并入 FULL seed:行序**原样透传**——
|
|
83
|
+
`order=latest` 是「从最新往回取页、按插入序返回」(v2026.9.14
|
|
84
|
+
`hermes_state_messages.py:779` + `:817-818`),读到的本就是时间序,不得再翻
|
|
85
|
+
(评审 N-1:此前多翻一次,超帽时反而丢最新、留最老,恰是 A1/A2)。单行截断
|
|
86
|
+
`RESEED_ROW_CHAR_CAP=1500`、总量 `RESEED_TOTAL_CHAR_CAP=6000`(超帽自最老行起丢)、
|
|
87
|
+
与 envelope `recent` 去重(normalize 后各取前 120 字符做**相等**比较——评审 I-1:
|
|
88
|
+
双向前缀匹配会让一条短行吞掉同头的长行,白丢真实交换)。
|
|
89
|
+
`context-render` 新增可选 `HermesRenderOptions.transcriptTail`,以
|
|
90
|
+
`sender='transcript_continuity'` / `senderRole='system'` 追加进 `priorMessages`
|
|
91
|
+
(composer 按 createdAt 排序,天然落在压缩段之后、recent 之前,无需手工
|
|
92
|
+
unshift);envelope 路径与 legacy `composeConversationContextXml` 路径均已透传。
|
|
93
|
+
首 turn(无映射)不回读,不额外发请求。
|
|
94
|
+
- **复用路径周期性对账(§3.4-1b / Task 2)**:新增 `cloud-io.ts` 窄 IO seam
|
|
95
|
+
(`setHermesCloudIO`/`getHermesCloudIO`,照 `setHermesSessionMapper` 先例,
|
|
96
|
+
runner.ts 启动接线、shutdown 摘除;未接线时全部降级为静默 no-op)。每个复用
|
|
97
|
+
turn 终态后 fire-and-forget 对账:`%5` turn 且距上次 ≥30min 双护栏限频,取
|
|
98
|
+
本会话最后一条**本 agent 发的** `metadata.kind='agent_reply'`(`senderId ===
|
|
99
|
+
agentImUserId`,评审 I-3:多 agent 会话里锚他 agent 的 turn 会报出本 transcript
|
|
100
|
+
从未有过的「错位」,白付轮换 + 误导通知)的 `taskId` 作 anchor,要求它出现
|
|
101
|
+
在 transcript 的某条 user row 中且其后存在非空 assistant row。错位 → 发一条
|
|
102
|
+
`context_continuity_reconciled` `system_event`(`session:anchor` 键 100 条 LRU
|
|
103
|
+
保证恰好一次)+ invalidate 映射。**并对账的补种链闭合**:invalidate 会 DELETE
|
|
104
|
+
映射行、使下一 turn 与「首 turn」不可区分,故错位时先把被弃 session 停靠进
|
|
105
|
+
`pendingReseedSources`(按 conversation+agent 稳定键),下一 dispatch 一次性消费
|
|
106
|
+
——补种回读与可见性事件因此都不断链。
|
|
107
|
+
- **抢救 anchor 校验(§3.4-2 / Task 3)**:`recoverReplyFromSessionTail` 捞回的
|
|
108
|
+
assistant 行须同时满足三条才采用:归属 anchor(anchorIdx 扫描已保证,显式化)、
|
|
109
|
+
anchorIdx 与捞回行之间无**其他** per-turn anchor 的 user row(防跨 turn 交叉
|
|
110
|
+
落盘)、捞回行 timestamp 不早于 anchor 行(唯一能抓「上一轮被杀 attempt 的答案
|
|
111
|
+
晚落盘在本轮 anchor 行之后」的判别——晚到答案生成于上一轮,timestamp 必然更早)。
|
|
112
|
+
任一不过 → 返回 null 并 `stderr` 记 `recovery rejected:`,交给既有 loud
|
|
113
|
+
`empty_reply` 失败路径(宁空失败,不冒充本轮回复);timestamp 缺失时降级为只查
|
|
114
|
+
前两条并在 stderr 记 `recovery_anchor_ts_missing`(可观测降级,不因缺证据拒绝)。
|
|
115
|
+
- 三条路径全部 fire-and-forget:失败 log/stderr 留痕后吞掉,绝不向主流程抛错、
|
|
116
|
+
不阻断派发(负控已固化)。零 DB 迁移、无 wire 协议变更、无
|
|
117
|
+
daemon↔cloud 版本协商需求(seam 未接线 / 老 cloud + 新 daemon 均安全降级)。
|
|
118
|
+
- 测试:新增 `sessions-dispatcher-transcript-reseed`(轮换播种正例 + 首 turn 不回读
|
|
119
|
+
+ 去重 + caps + 读失败负控 + **envelope 路径正例**——补上生产路径此前无正例的
|
|
120
|
+
覆盖缺口,删掉 :1270 的透传该用例即红、其余全绿)、`sessions-reconciliation`
|
|
121
|
+
(错位恰好一次 + 对齐零调用 + N/间隔门 + seam 未接线 + 云调用失败吞错)。
|
|
122
|
+
`sessions-dispatcher-empty-reply` 追加 recovery anchor 校验组(晚到答案拒绝 /
|
|
123
|
+
本轮晚落盘照常采用 / 异锚插入拒绝 / 无 timestamp 降级留痕)。
|
|
124
|
+
- 既有 immutable-release 规则下版本号 bump 与否由发版时判定。
|
|
125
|
+
|
|
126
|
+
### Hermes — S5 压缩可观测 / 轮换可见性 / skill-sync 错峰(docs/organization/specs/05 Task 5-9,daemon 侧)
|
|
127
|
+
|
|
128
|
+
- **压缩静默失败可观测(§3.4-3b / Task 5)**:`runBackgroundCompaction` 的四处**真
|
|
129
|
+
失败**——candidate GET 非 2xx / `compactSlice` 返回 `result.error` / projection 空
|
|
130
|
+
/ segment POST 非 2xx——除既有 `traceLog` 外,现在还会 bump
|
|
131
|
+
`MemoryStageCounters.compactionFailed`(新增计数位,随 `/healthz`
|
|
132
|
+
`memory.counters` 暴露)。三处**正常门**(`no_conversation_id` / 历史不足
|
|
133
|
+
`COMPACTION_MIN_HISTORY` / `%N` 轮询门)保持 log-only,不计入失败位——门不是失败。
|
|
134
|
+
有 run 归属时另经既有 run/task event 通道 fire-and-forget 上云
|
|
135
|
+
(`type=COMPACTION_FAILED`、`payload.stage`),上报失败只 log 不再造失败。
|
|
136
|
+
**落点(T1-2b R1 修正)**:首版打的是 `POST /api/im/tasks/:id/event`,而
|
|
137
|
+
`ctx.taskId` 实际是**本轮派发的 run id**(registry `canonicalTurnId` = 线上
|
|
138
|
+
run id)——该路由是 task 作用域、拿 id 查 `im_tasks`,对 run id 空间回
|
|
139
|
+
`400 RUN_ID_ON_TASK_ROUTE`,又被 best-effort 的 catch 吞掉 ⇒ durable 上报在产
|
|
140
|
+
是**静默 no-op**,只有本地计数位真的动。现改投 run 作用域
|
|
141
|
+
`POST /api/im/runs/:runId/events`(assignee 经 `checkRunReadAccess`),
|
|
142
|
+
**仅**在该请求回 404 时重试一次 task 作用域路由——id 空间本就是双义的
|
|
143
|
+
(release202/09 §3.2:chat 派发带 run id、kanban task 派发带 task id、legacy run
|
|
144
|
+
保留裸 cuid),404 是它唯一的信号;非 404(403 身份 / 5xx / 不可达)不重试。
|
|
145
|
+
- **轮换可见性 + FULL seed 诚实声明(§3.4-4a / §3.4-7 / Task 6+9)**:凡「铸新
|
|
146
|
+
session 且存在前一个 session」的轮换面(404 `session_not_found` 重入 / S10 空回复
|
|
147
|
+
轮换 / interrupt / 对账补种),fire-and-forget 发一条 `system_event`,文案统一为
|
|
148
|
+
诚实状态声明「上下文窗口已重建:更早的对话内容已按摘要保留,最近的交流已重新
|
|
149
|
+
载入。如有需要请提醒我补充关键背景。」,metadata 统一
|
|
150
|
+
`{kind:'context_rebuilt', reason, previousSessionId, reseededRows}`(
|
|
151
|
+
`reseededRows` 为 Task 1 实际回读注入行数,无回读诚实为 0)。此前轮换完全静默:
|
|
152
|
+
agent 丢了 transcript、cloud 按摘要重建,用户只看到「回复不再引用上文」。
|
|
153
|
+
seam 未接线(`setHermesCloudIO(null)`)→ 静默跳过,不向派发抛错。
|
|
154
|
+
- **skill-sync 杀 gateway 错峰(§3.4-4b / Task 6)**:上游 gateway route 表无
|
|
155
|
+
skill reload/rescan(catalog 只在 spawn 时扫),真热重载属上游改动。新增
|
|
156
|
+
`HermesService.busy`(`currentRunId !== undefined`,run 终态 `finally` 必清)与
|
|
157
|
+
`respawnHermesGatewayAfterSkillSync`:空闲照旧 atomic invalidate + 杀 gateway;
|
|
158
|
+
**有在飞 run 则推迟**——`markSkillDirty` 重新置脏位、交由下次 dispatch
|
|
159
|
+
(`consumeSkillDirty`)消费,本轮继续用现 gateway(新 skill 本轮不可见,优于杀在飞
|
|
160
|
+
run 并让该 profile 全部 session 集体失联)。无 `markSkillDirty` seam 时不静默丢
|
|
161
|
+
改动:stderr 告警后照旧杀(退回 S5 前行为)。`DispatchDeps` 新增
|
|
162
|
+
`markSkillDirty` / `peekServiceBusy`,runner 两处 dep bag 均已接线。
|
|
163
|
+
|
|
164
|
+
### Hermes — 空回复轮换阈值 1→2 + 首次空回复可见(spec 11 / T1-3,daemon 侧)
|
|
165
|
+
|
|
166
|
+
- `session-health`:`EMPTY_ROTATE_THRESHOLD` 默认 **1 → 2**——首次 `empty_reply`
|
|
167
|
+
不再轮换,连续第二次才在下一 turn 铸新 hermes session。2.2.9 的「一次即轮换」
|
|
168
|
+
建立在「hermes 只在可恢复但为空时才 EMPTY」这一假设上,生产事实相反:首次
|
|
169
|
+
EMPTY 常是上游瞬断(provider 流中断、网关冷启动),照旧语义立即轮换会丢掉一个
|
|
170
|
+
下一轮本可复用的健康 transcript——用户付一次完整 reseed(envelope FULL seed +
|
|
171
|
+
transcript 回读),agent 也丢掉它已有的上下文。
|
|
172
|
+
- env 覆盖 `HERMES_SESSION_EMPTY_ROTATE_THRESHOLD` 保留为运维逃生口(`1` = 2.2.9
|
|
173
|
+
语义,事故可回滚);`Math.max(1, …)` 下界保留(轮换只发生在 turn 起点,0/负数
|
|
174
|
+
无意义且会静默废掉守卫);非数字覆盖回退默认值而非 NaN(NaN 会让
|
|
175
|
+
`streak >= NaN` 恒 false,等于静默永久关掉轮换)。新增 `emptyRotateThreshold()`
|
|
176
|
+
导出,供调度器读取实际生效值,避免与 `shouldRotate` 的判据漂移。
|
|
177
|
+
- `sessions-dispatcher`:首次(未达阈值)空回复发一条 `empty_reply_observed`
|
|
178
|
+
`system_event`,其 `reason` 复用轮换事件(`context_rebuilt`)的
|
|
179
|
+
`empty_reply_streak` 枚举值,并附带 streak / 生效阈值 / sessionId——两次失败因此
|
|
180
|
+
读成一条故事:「仍在阈值下」→「达阈,窗口已重建」。文案与阈值解耦(不承诺
|
|
181
|
+
「下一轮即重建」:运维把阈值调到 ≥3 时那是假话)。云侧 IO 未接线或不可达时静默
|
|
182
|
+
跳过,不计为派发失败。
|
|
183
|
+
- 测试:新增 `sessions-dispatcher-empty-reply-threshold`(oracle 两次空回复 +
|
|
184
|
+
两条负控 + 边界);`session-health-persistence` 补阈值判据组(env=3 两次仍不轮换
|
|
185
|
+
= 真阈值而非「延迟一拍」的假实现、env=1 恢复 2.2.9 语义、非数字覆盖回退 2、
|
|
186
|
+
0 夹到 1);`sessions-dispatcher-single-flight-rotation` 按新裁决更新。
|
|
187
|
+
- 既有 immutable-release 规则下版本号 bump 与否由发版时判定。
|
|
188
|
+
|
|
189
|
+
### infra — Hermes pin v2026.8.3 → v2026.9.14(S1,docs/organization/specs/01)
|
|
190
|
+
|
|
191
|
+
- **infra 锁**:`engine-lock.json` hermes 块 ref/installerSha256/uv.lock sha256、
|
|
192
|
+
`build-inputs.lock.yaml` hermes ref/installerUrl/installerSha256 + verifiedAt。
|
|
193
|
+
- **镜像构建探针**:`Dockerfile.base` ARG 默认值随锁同步;探针串换为新 pin 的
|
|
194
|
+
`if not route and model:` 并追加语义锚 `route_source = "raw_request"`(防探针
|
|
195
|
+
弱化成空洞匹配);安装调用加 `--skip-computer-use`(新 install.sh 会 best-effort
|
|
196
|
+
从 unpinned `trycua/cua@main` 拉 cua-driver,不入 pinned-inputs 镜像)。
|
|
197
|
+
- **桌面 DMG payload**:hermes requirements 闭包按 v2026.9.14 `uv.lock` 重导出
|
|
198
|
+
(arm64:71 pins,cryptography 48.0.1→50.0.0,+firecrawl-anydoc/pillow-heif/
|
|
199
|
+
snowballstemmer,nemo-relay 0.6.0→0.8.3);`engine-payload.manifest.json` 的
|
|
200
|
+
`engineLockSha256` / `hermesRequirements.*.sha256` / `hermes-source` 重算。
|
|
201
|
+
⚠️ **x64 (Intel) 未能重导出**:tag 把 cryptography 钉在 50.0.0,上游自 49.0.0
|
|
202
|
+
起删除全部 Intel-macOS wheel,wheel-only 链路下无法成闭包;文件头已记录阻塞,
|
|
203
|
+
x64 当前不是 DMG 目标(`electron-builder.yml` arm64-only),需 owner 裁决。
|
|
204
|
+
- **测试**:新增 `test/sessions-sse-upgrade-compat.test.ts`(6 例)——keepalive 注释
|
|
205
|
+
帧不干扰正文、注释帧不喂 stall watchdog(负控)、未知/前瞻事件不进 output
|
|
206
|
+
(含 delta 兜底反例)、终态标志与 transcript 载荷无副作用、无 run.started 的
|
|
207
|
+
error 事件仍保留 run_id。
|
|
208
|
+
- **daemon 源码变更为注释级**(`sessions-dispatcher.ts` 两处 stale 说明更正:
|
|
209
|
+
sessions run 在 v2026.9.14 已注册 `_active_run_agents` + owner stamp,stall-abort
|
|
210
|
+
的 `/v1/runs/{id}/stop` 自新 pin 起真实生效)。既有 immutable-release 规则下
|
|
211
|
+
版本号 bump 与否由发版时判定。
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
### K 空腔闭合 — `prismer chat direct` 202 ACTION_DEFERRED 分支
|
|
216
|
+
|
|
217
|
+
- `chat direct` 收到 202 deferred(跨台联系人审批)时输出
|
|
218
|
+
「等待联系人审批(approvalId: …)——审批通过后重新发送」,不再打印
|
|
219
|
+
"sent"(此前消息 hold 在审批侧却被报成已发送;h-contact-system-refactor
|
|
220
|
+
§9-SDK)。
|
|
221
|
+
|
|
222
|
+
### Hermes — session-health 默认路径生效(spec 11 / T1-3b,daemon 侧)
|
|
223
|
+
|
|
224
|
+
- `session-health`:`HERMES_SESSION_HEALTH_FILE` 未设时 health 文件**默认落盘**于
|
|
225
|
+
`~/.prismer/hermes-session-health.json`。2.2.9 的
|
|
226
|
+
`process.env.HERMES_SESSION_HEALTH_FILE ?? null` 让紧随其后的 `=== undefined`
|
|
227
|
+
默认分支永不成立(`??` 已把 `undefined` 从类型里摘掉,且严格模式下也不报错):
|
|
228
|
+
env 未设时 `healthFile` 恒为 null,`persist()` / `load()` 双双 early return——
|
|
229
|
+
「重启不丢轮换信号」只在运维显式给 env 时才成立。阈值 1→2 之后后果更实:
|
|
230
|
+
streak 只活在进程内存,重启落在两次 EMPTY 之间即归零,污染会话可永久不轮换
|
|
231
|
+
(每轮只留一条可见行,无自愈)。语义收敛为 `undefined`(未设)→ 默认文件、
|
|
232
|
+
`''` → 关闭持久化、其余 → 显式路径。
|
|
233
|
+
- vitest `test/setup`:导入前把 env 钉到 per-file 临时路径。默认路径生效后,任何
|
|
234
|
+
import hermes dispatcher 的测试文件(实测 10 个里 7 个会写)都会把 fixture 写进
|
|
235
|
+
开发者真实的 `~/.prismer/hermes-session-health.json`——那正是 09 管理员消费的
|
|
236
|
+
观察资产;显式导出的 env(含空串 = 关闭)原样尊重。
|
|
237
|
+
- 测试:新增「无 env → 两次 EMPTY → `$HOME/.prismer/…` 出现且 streak=2 → 重载
|
|
238
|
+
(新 module 实例)后 `shouldRotate` 仍 true」(负控:显式 env 优先且默认位置不被
|
|
239
|
+
创建);既有显式路径用例逐字节不变。
|
|
240
|
+
- daemon 源码变更;版本号 bump 与否由发版时(immutable-release 规则)判定。
|
|
241
|
+
|
|
242
|
+
### Hermes — `prismer` 平台桥接客户端(daemon 侧传输,spec 11 / T4)
|
|
243
|
+
|
|
244
|
+
新增 `src/adapters/persistence/hermes/bridge-client.ts`:hermes gateway 的
|
|
245
|
+
`prismer` 自定义平台插件(`~/.hermes/profiles/<p>/plugins/prismer/adapter.py`)在
|
|
246
|
+
127.0.0.1 上以换行分隔 JSON 提供一个本地 TCP 桥;本模块是 daemon 侧的客户端传输层。
|
|
247
|
+
|
|
248
|
+
- 传输语义:`BridgeClient` 连 `127.0.0.1:<port>`,断线按 `reconnectDelayMs` 重连
|
|
249
|
+
(`close()` 是唯一的停止方式),`waitForConnected()` 超时抛显式错误;
|
|
250
|
+
`buildInboundFrame()` / `parseOutboundFrame()` 逐字段对齐插件读写契约;
|
|
251
|
+
`probeBridge()` 做 TCP 可达性探测(协议无 ping 帧,可达性即健康信号)。
|
|
252
|
+
- 失败可见性:桥进程不存在时 `sendInbound()` 返 `{ok:false,error}`、
|
|
253
|
+
`probeBridge()` 返 `{reachable:false,code:'ECONNREFUSED'|'ETIMEDOUT'}`、
|
|
254
|
+
超出上限的悬挂行与畸形出站行走 `onMalformed`——无静默丢弃、无 unhandled rejection。
|
|
255
|
+
- 如实透传的 gateway 侧事实(不在本层修补):突发连发时出站 `reply_to` 可能错锚;
|
|
256
|
+
无连接时 gateway 的 `send()` 返 `SendResult(success=false, error="no daemon bridge
|
|
257
|
+
connected")` 给 agent 而非上线(daemon 侧完全观测不到,连接态必须取自 `isConnected`);
|
|
258
|
+
首回合配对门回复按普通 `content` 透传;插件对 `t != "in"` 或空 `text` 的入站帧
|
|
259
|
+
静默丢弃——因此客户端在本地就拒绝空文本,不留「写出去但被吞掉」的窗口。
|
|
260
|
+
- 落地方式:模块为**未接线**的传输原语(谁在 dispatch 里用它不在本波范围);
|
|
261
|
+
为使其进入发布产物,`src/index.ts` 追加了对应 re-export(与 `WsClient` 同惯例)。
|
|
262
|
+
CHANGELOG 之外的版本文件零改动。
|
|
263
|
+
|
|
264
|
+
### EaaS — bash 解禁(会话级)+ turn 协议 v2 工具事件(events.jsonl / output.tools[])
|
|
265
|
+
|
|
266
|
+
设计:`docs/superpowers/specs/2026-09-21-eaas-bash-tool-observability-design.md`(§3.1 修1、
|
|
267
|
+
§3.2、§5 修5/修6)。runtime 侧半边;cloud 侧轮询器与事件类型在 PrismerCloud 仓。
|
|
268
|
+
|
|
269
|
+
- **pi-core 会话级 shell 开关 `allowShell`(缺省 false)** —— `PiAgentCoreClientOptions` /
|
|
270
|
+
session options 新增该字段(默认关闭)。true 时:① 工具面在 read/write/edit 之外追加
|
|
271
|
+
`bash`(`createBashTool()`);② `CwdJailedExecutionEnv.exec()` 由「恒返 `spawn_error`」
|
|
272
|
+
改为委托内层 env(异常仍映射回 `ExecutionError` 语义);③ `createTempDir` / `createTempFile`
|
|
273
|
+
解除恒拒,但在 `<cwd>/.eaas/tmp/` 内创建(mkdir -p,保留上游 prefix/suffix,仍走 jail
|
|
274
|
+
检查)——bash 长输出截断依赖 temp 文件,落点必须留在 jail 内。**缺省 false 是刻意的
|
|
275
|
+
爆炸半径控制**:daemon(dispatch / runner / skill-sync)与 engine registry
|
|
276
|
+
(`createPiCoreAdapter`)路径的工具面与拒绝面**逐字不变**(缺省时仍是「Tool bash not
|
|
277
|
+
found」+ exec 原文拒绝),桌面/本地 hosted agent 零影响。
|
|
278
|
+
- **工具事件(只记录不拦截)** —— `Agent` 构造接 `beforeToolCall` / `afterToolCall`:前者发
|
|
279
|
+
`tool_started`(name + argsSummary),后者发 `tool_finished`(resultSummary + isError +
|
|
280
|
+
durationMs)。两个 hook 恒返回 `undefined`(策略位留空——deny/HITL 后续可叠加,协议零
|
|
281
|
+
改动);sink 抛错被吞掉(否则会被上游换成错误工具结果 = 事件面污染 turn)。摘要清洗在
|
|
282
|
+
产生侧做一次(剥字面量出口 token + `Bearer …` / `sk-…` 形态),写侧再洗一次(防御纵深)。
|
|
283
|
+
- **turn 协议 v2**(`src/turn/protocol.ts`)—— `TURN_PROTOCOL_VERSION = 2`(唯一合法值,
|
|
284
|
+
不做兼容推断)。新增 `events.jsonl` 行 schema(`ToolEventV1`:`seq/at/kind/name/argsSummary?/
|
|
285
|
+
resultSummary?/isError?/durationMs?`)、常量 `TURN_EVENTS_FILENAME` /
|
|
286
|
+
`TURN_EVENTS_MAX_COUNT = 200` / `TURN_EVENTS_MAX_BYTES = 512KiB` /
|
|
287
|
+
`TOOL_SUMMARY_MAX_CHARS = 500`、`parseToolEventLine`、以及 `TurnResultV2.tools[]` 终态汇总
|
|
288
|
+
(`TurnResultV1` → `TurnResultV2`)。v1 `output.json` 被解析器**明确拒绝**(带 skew 说明),
|
|
289
|
+
v1 envelope / egress 同样拒绝——旧 bundle 收 v2 是可见失败(exit 70),不静默降级。
|
|
290
|
+
- **写侧(`src/turn/runner.ts`)** —— `createToolEventWriter`:**seq / at 由写侧赋值**
|
|
291
|
+
(1-based 单调,行序 ≡ seq 序,轮询器据此去重),一行一条追加、首行落盘即 0600,达上限
|
|
292
|
+
**停写**;终态 `tools[]` 在内存无条件折叠(修6:超限只影响流式粒度,不影响终态),孤儿
|
|
293
|
+
`tool_started`(取消/超时,修5)如实呈现(有 `startedAt` 无 `finishedAt`,不补写)。文件
|
|
294
|
+
懒创建(本轮无工具调用 ⇒ 不落 events.jsonl)。`runTurnFile` 把终态写进 `output.json.tools[]`;
|
|
295
|
+
EaaS turn 恒以 `allowShell: true` 建会话(`turnSessionClientOptions`)。
|
|
296
|
+
- 测试:`test/turn-protocol.test.ts`(v2 accept/reject、events 行 schema、摘要截断/剥凭据)、
|
|
297
|
+
`test/turn-events.test.ts`(seq 单调、上限、终态完整性、写失败不改 turn、turn 目录落点)、
|
|
298
|
+
`test/pi-core-shell-gate.test.ts`(缺省工具面恰好 read/write/edit、exec/temp 拒绝原文、
|
|
299
|
+
allowShell 下 bash 真跑与 jail 内 temp、hook 只记录不拦截)。三处均含故障注入负控(缺省
|
|
300
|
+
翻 true / seq 冻结 → 用例变红)。
|
|
301
|
+
- **无版本号 bump**:本波是 runtime 面新能力(需随下一次 bundle 重签重发才能进 pod),
|
|
302
|
+
版本对齐按发版轮统一做。
|
|
303
|
+
### S6/M1 Task 6 — 兼容矩阵固化 + 回滚开关(本包零代码改动)
|
|
304
|
+
|
|
305
|
+
- **本包无源码/测试改动**:Task 6 只做证明 + 开关固化 + 文档同步;唯一的测试补齿
|
|
306
|
+
落在云侧 `src/im/tests/acp-serial-merge-trigger.test.ts`(M0 合并 vanish-in-tx
|
|
307
|
+
用例补排队标记断言),不属本包。
|
|
308
|
+
- **四配对兼容矩阵逐条固化**(全部实跑绿;锚点表见 `docs/organization/specs/
|
|
309
|
+
06-milestone-narration-m1.md` Task 6):新 daemon × 旧 cloud(能力位缺席 → 单帧
|
|
310
|
+
I3)、旧 daemon × 新 cloud(帧无 `final` 键 → 走终结分支)、新 daemon × 新 cloud
|
|
311
|
+
且 relay 关(`HERMES_COMMENTARY_RELAY` off → 单帧)、上游门关(零 commentary →
|
|
312
|
+
零回调 + output 逐字节不变)。部署顺序任意——承重机制是**请求能力位**(旧 cloud
|
|
313
|
+
的请求永远不带 `interimReply`),不是帧字段的可选性;帧上 `seq/final` 对旧 cloud
|
|
314
|
+
是惰性 JSON 多余字段。
|
|
315
|
+
- **回滚开关**:`HERMES_COMMENTARY_RELAY=false|0|off`(本包
|
|
316
|
+
`src/adapters/persistence/hermes/flag.ts`,每 turn 动态读)→ 下一个 turn 回单帧;
|
|
317
|
+
对端 cloud 的 `FF_INTERIM_REPLY`(`src/im/ws/v19x-helpers.ts`,每次装配读)→
|
|
318
|
+
下一次派发回单帧。两者相互独立,任一关即回改动前字节行为;**无 DB 回滚需求**
|
|
319
|
+
(零迁移)。
|
|
320
|
+
- **无版本号 bump**:本轮无源码变更,版本对齐仍随 S6 发版轮统一做。
|
|
321
|
+
|
|
322
|
+
### S6/M1 Task 2 — daemon wire:`task.dispatch.reply` 多帧发送
|
|
323
|
+
|
|
324
|
+
- `src/types/im-events.ts` + 云侧镜像 `src/im/types/im-events.ts`(两份同步):
|
|
325
|
+
`TaskDispatchRequestPayload` 新增可选 `interimReply`(capability bit——只有
|
|
326
|
+
懂多帧的 cloud 才会带;legacy cloud 永远不带 = 它永远只收终结帧,这条不变式
|
|
327
|
+
由该字段承载而非由帧承载);`TaskDispatchReplyPayload` 新增可选
|
|
328
|
+
`seq`(turn 内 1-based 帧位)/ `final`(false = interim 旁白帧;true/缺省 =
|
|
329
|
+
终结帧)。
|
|
330
|
+
- `src/daemon/dispatch.ts`:双门制——`interimReply === true` **且**
|
|
331
|
+
`isHermesCommentaryRelayEnabled()`(env `HERMES_COMMENTARY_RELAY` 二道闸)
|
|
332
|
+
才把 Task 1 的 `TaskInput.onInterimReply` 接到发帧:每段旁白出 I1 帧
|
|
333
|
+
`{ ok: true, output: <段文本>, seq, final: false }`;终结帧在**所有** reply
|
|
334
|
+
出口(adapter_unhealthy / workdir_materialize_failed / 主出口)统一经
|
|
335
|
+
`markTerminalReply` 补标 I2 `{ seq: N+1, final: true }`(失败终结帧同样补
|
|
336
|
+
标——interim 帧永不失败是 I6,终结帧仍是唯一完成标记)。能力位缺省 / env
|
|
337
|
+
关 / 零旁白 turn:单帧且 wire 上**无 seq/final 键**(I3,与现状字节一致)。
|
|
338
|
+
runs-dispatcher / `tool.*` 降级路径 / shell 面一律未动。
|
|
339
|
+
- **deltas 回退残余窗口裁决**(Task 1 交接旗标):「上游 commentary 不进
|
|
340
|
+
delta 流」在 daemon 侧**不可保证**——已作为契约注释落在
|
|
341
|
+
`interimRelayArmed` 声明处;退化 turn(终结 output 与已发 interim 段拼接
|
|
342
|
+
完全一致 = 上游旁白漏进 output 路径)的 daemon 侧处置 = 主出口 grep 可见
|
|
343
|
+
的 `interim relay degenerate turn` stderr 标记 + 契约注释,帧计划不偏离
|
|
344
|
+
I1-I6(interim 帧逐段 fire-and-forget 已出站、不可撤回;cloud handler 只认
|
|
345
|
+
`final === false` / `seq`,不发明新 wire 语义;渲染侧去重归 cloud 层)。
|
|
346
|
+
- 新增导出纯函数 `buildInterimFrame(taskId, segment)` /
|
|
347
|
+
`markTerminalFrame(reply, lastInterimSeq)`。
|
|
348
|
+
- 新测试 `test/dispatch-interim-reply-frames.test.ts`(7 用例,mock WsClient
|
|
349
|
+
捕帧、不经真实 socket):多帧序 + 终结补标 + requestId 逐帧回显、能力位缺省
|
|
350
|
+
负控①(回调不挂载,legacy 恰 1 帧)、env 关负控②、零旁白负控③(I3 字节
|
|
351
|
+
兼容:`'seq' in frame === false`)、失败终结帧补标、退化签名观测、纯函数
|
|
352
|
+
shape。兄弟 dispatch 回归 8 文件 99 用例全绿,`tsc --noEmit` 干净。
|
|
353
|
+
- **fix round 1(评审 Important)**:I4 在瞬时重试下被打破——adapter 上报的
|
|
354
|
+
`seq` 是每条 SSE 流局部(Task 1 `commentarySeq` 每次 `consumeSessionsSse`
|
|
355
|
+
1-based 重置),而重试循环复用同一 `onInterimReply` 闭包,attempt 2 的旁白
|
|
356
|
+
会把 wire 打成 `[1, …, 1, terminal N]`(seq 重复 + 终结帧非最大)。修法 =
|
|
357
|
+
**daemon 侧单派 seq(`++interimSeq`),不信任 adapter 上报值**;新增重试
|
|
358
|
+
负控测试④(attempt1 旁白后瞬时失败 → attempt2 新流旁白 seq 重置,断言
|
|
359
|
+
daemon 帧序 `[1,2,3]` 严格递增、终结帧最大;红→绿,修前实测 wire
|
|
360
|
+
`[1,1,2]`)。评审 Minor #2 一并收:退化标记改走 `traceLog`(带
|
|
361
|
+
`[trace=…]` 前缀,与 dispatch 全程 trace 一致)。
|
|
362
|
+
- **无版本号 bump**:字段全部 optional-additive,单帧路径字节不变;版本对齐
|
|
363
|
+
随 S6 发版轮统一做。
|
|
364
|
+
|
|
365
|
+
### S6/M1 Task 1 — Hermes `assistant.commentary` 多段旁白回流(adapter SSE 消费段)
|
|
366
|
+
|
|
367
|
+
- `src/adapters/contract.ts`:`TaskInput` 新增可选 `onInterimReply(segment: { text, seq })`
|
|
368
|
+
—— turn 内每段非空旁白逐段回调(per-turn 1-based `seq`,流序保序);回调是
|
|
369
|
+
fire-and-forget,consumer 抛异常不断 SSE 循环;最终 `TaskResult.output` 语义不变
|
|
370
|
+
(仍= 最后一条 `assistant.completed`)。Task 2 的 daemon 消费面按此契约接。
|
|
371
|
+
- `src/adapters/persistence/hermes/sessions-sse.ts`:新增 `assistant.commentary` case
|
|
372
|
+
(hermes v2026.9.14)。实测上游契约(2026-09-21 本地 source 真跑):字段名是 `text`
|
|
373
|
+
(附 `message_id` / `already_streamed` / `session_id` / `run_id` / `seq` / `ts`),
|
|
374
|
+
brief 期 fixture 与旧 build 的 `content` 兜底——两者都收,`text` 优先(同文件
|
|
375
|
+
`reasoning.available` 多字段容忍先例)。旁白与 delta 累加、`finalContent` 保持
|
|
376
|
+
**完全不相交**:`already_streamed: true`(该段已作为 assistant.delta 流出)的段
|
|
377
|
+
只走回调,绝不并入最终 output——这就是去重语义。无「值得发否」二次过滤(owner
|
|
378
|
+
裁决:非空全量上抛,收窄后置)。`SessionsSseResult` 新增必填
|
|
379
|
+
`commentarySegments: string[]`(测试/诊断用;无旁白 turn 为空数组;approval
|
|
380
|
+
拆流早退路径同样携带)。`tool.*` / `message.started` 降级路径、
|
|
381
|
+
`!isAgentReply` 守卫、runs-dispatcher / message.interim 一律未动。
|
|
382
|
+
- `src/adapters/persistence/hermes/flag.ts`:新增 kill-switch
|
|
383
|
+
`HERMES_COMMENTARY_RELAY`(默认开,显式 `false|0|off` 才关)——与
|
|
384
|
+
`HERMES_TASK_RUNS_DISPATCH` 反极性是有意的:回流是新默认行为,env 仅作运维逃生门。
|
|
385
|
+
- 新测试 `test/sessions-sse-commentary.test.ts`(6 用例):多段顺序 + 1-based seq、
|
|
386
|
+
keepalive 注释帧/空白旁白零回调(负控①)、回调抛异常不断流(负控②)、实测上游
|
|
387
|
+
shape(text + already_streamed 不并入 output)、kill-switch、无旁白流回归
|
|
388
|
+
(负控③,commentarySegments 为空 + output 逐字节不变)。兄弟 SSE 回归
|
|
389
|
+
(upstream-error 9 / stall-watchdog 10 / first-event 3)与 dispatch 面 7 文件
|
|
390
|
+
109 用例全绿,`tsc --noEmit` 干净。
|
|
391
|
+
- **无版本号 bump**:`onInterimReply` 为可选新增、daemon 消费面属 Task 2,版本
|
|
392
|
+
对齐随 S6 发版轮统一做。
|
|
393
|
+
|
|
394
|
+
### memory211/10 R4 — W-1 digest「Verified this turn」段(harness receipt 派生)
|
|
395
|
+
|
|
396
|
+
- `daemon/memory/digest.ts`:`buildMemoryDigest` 新增可选 `verified.lines` 入参——
|
|
397
|
+
在 hub spine 之后渲染 `# Verified this turn` 段,内容**逐行 verbatim 来自
|
|
398
|
+
harness 持有的 receipt**(task 状态机当前态 / 上一 turn terminal receipt 摘要 /
|
|
399
|
+
已完成产物指针);builder 是纯渲染器,自己不派生任何事实。稳定性契约原样适用:
|
|
400
|
+
同 receipts ⇒ 字节一致、version(body 的 sha256 前 16)随之变化使缓存行失效;
|
|
401
|
+
**无 receipts ⇒ 整段不存在**(与 W-1 之前字节一致,不留空段)。段在极端守卫
|
|
402
|
+
(32K tokens)之内。新测试 `test/memory-digest-verified.test.ts`(5 用例)。
|
|
403
|
+
- **调用侧接线(digest provider 处传 receipts)与演化 origin 的 daemon 产线贯通**
|
|
404
|
+
属 runtime 发版轮工作(pack+promote 需 owner 授权);本波先把 builder 面与
|
|
405
|
+
契约测试落库。
|
|
406
|
+
- `daemon/memory/envelope.ts` 的 `MemoryPageUpsertEvent` 云侧解析面新增可选
|
|
407
|
+
`evolutionOrigin`(additive,不 bump schemaVersion,同 encrypted 先例)——
|
|
408
|
+
携带该字段的 upsert 在云侧改道为 proposal 候选(见 PrismerCloud 仓
|
|
409
|
+
memory-write.service.ts)。
|
|
410
|
+
|
|
411
|
+
### memory211/10 R1 — §2.1 演化产物 metadata 闸(daemon 侧镜像)
|
|
412
|
+
|
|
413
|
+
- `daemon/memory/write-gate.ts`:新增 `checkEvolutionMetadataGate(content)` +
|
|
414
|
+
导出值域常量 `MEMORY_ROLES`(07 §2.1 的三分角色)。校验页体 frontmatter
|
|
415
|
+
`extra.memory` 受控块(memoryRole / source 必填,trigger / sections 可选,
|
|
416
|
+
`sections[]` 按 anchor 索引 —— D-1 (a)),未知键拒绝。
|
|
417
|
+
- **本波不接线**(有意的,非遗漏):daemon 的演化面是 **proposal**(
|
|
418
|
+
`memory.proposal` outbox 车道),不是页;daemon 真正写页的那条腿是自动抽取
|
|
419
|
+
管线,而 write-gate.ts 的文件头已写明新增 422 绝不可落在那条腿(后台腿无法
|
|
420
|
+
修复 ⇒ 静默丢记忆 = D4 失效模式)。接线 `memory.proposal` 车道属 R2
|
|
421
|
+
「proposals 扩展」,待候选真的带上块之后。
|
|
422
|
+
- 与云侧 `src/im/services/memory-activation-probe.ts` 是**镜像**(两个包各有自己
|
|
423
|
+
的 tsconfig 与 staged pkf 拷贝,无法共享代码,先例 `src/im/services/
|
|
424
|
+
magic-bytes.ts`)。同源性由 `scripts/__tests__/
|
|
425
|
+
memory211-evolution-metadata-parity.test.ts` 强制:值域相等 + 逐 fixture
|
|
426
|
+
判定/字段级一致,单边改动即红。
|
|
427
|
+
- `daemon/dispatch.ts`:`MEMORY_CORE_DIRECTIVE` 增一行「演化产物过门 + verdict 回执」
|
|
428
|
+
(07 §5 维5 的义务)。理由:§2.1 闸现在会**拒**缺块的演化产物,若 brief 不提这
|
|
429
|
+
件事,被派发的腿会把 422 读成死路并把产物丢掉——正是本车道要杀的 no-fallback
|
|
430
|
+
失效模式。该行 210 字符,指令此前已在 1292/1300 顶格,故预算 1300 → **1600**
|
|
431
|
+
重钉(同 memory211/01 W5 轴H 的 1200→1300 先例:mandated content 才重钉,
|
|
432
|
+
非编辑性膨胀;理由写在 pkf-skill-delivery.test.ts 用例注释里)。
|
|
433
|
+
- 教学:`sdk/cloud/catalog/skills/memory/SKILL.md` 增第 5 条 PKF body invariant
|
|
434
|
+
(`extra.memory` 块、三分 memoryRole 的路由含义、source 的人类可陈述性、
|
|
435
|
+
`sections[]` 按 anchor、手写页豁免、被拒后按 verdict 指名字段修复重提)。
|
|
436
|
+
catalog 是单一来源,runtime 镜像由 `npm run prebuild` 生成(已重跑并核对
|
|
437
|
+
byte-identical,484 行 ≤ 520 预算)。
|
|
438
|
+
- **无版本号 bump**:本波不加行为到已发布的 daemon 面(纯新增导出、零调用点,
|
|
439
|
+
指令侧只是把既有闸的存在告知生产者),版本对齐随 memory211 发版轮统一做。
|
|
440
|
+
|
|
441
|
+
### memory211/08 A4-① — extract.done 观测上行(post-turn 抽取健康进云端活动面板)
|
|
442
|
+
|
|
443
|
+
- `daemon/memory/envelope.ts`:union 新增 `ExtractDoneEvent`(`eventType:
|
|
444
|
+
'extract.done'`,TOP-LEVEL ObservabilityCommon 字段;`eventFamily` 归
|
|
445
|
+
observability)。**Additive,不 bump schemaVersion**(同 traceId /
|
|
446
|
+
recall_fork 先例:老 daemon 永不发该字面量,旧 envelope 解析不变,
|
|
447
|
+
memory_outbox 无该形状旧行)。部署顺序:**cloud 先合、SDK 后发**——cloud
|
|
448
|
+
未加 OBSERVABILITY_TYPES 前,新事件会被判 unknown_event_type 进死信。
|
|
449
|
+
- `adapters/coding/shared/lifecycle/post-turn-worker.ts`:`PostTurnWorker`
|
|
450
|
+
新增第 4 个可选依赖闭包 `emitObservability`(缺省 no-op,永不断 Blocking
|
|
451
|
+
post-turn 车道)与 options.deviceId(extract.done 溯源);每个 outcome
|
|
452
|
+
迁移(applied / skipped / failed_retryable / failed_terminal)发一条
|
|
453
|
+
extract.done;idempotencyKey =
|
|
454
|
+
`obs:extract.done:<jobKey>:<attemptCount>:<outcome>`(attempt 入 key:cloud
|
|
455
|
+
幂等 hash 全 envelope,payload 可变则 key 必须变,否则 409)。
|
|
456
|
+
`PostTurnExtractionResult` 增可选诊断字段(skipReason/gatedOut/truncated/
|
|
457
|
+
latencyMs/promptTokens/completionTokens/errorStatus)。
|
|
458
|
+
- `daemon/memory/hook-server.ts`:`extractDurablePostTurn` 把 skip 原因与
|
|
459
|
+
抽取诊断透传给 worker(原先只进内存计数器)。
|
|
460
|
+
- `daemon/memory/outbox-worker.ts`:flush tick 后采样
|
|
461
|
+
`memoryOutboxHealthSnapshot()`(pending/deadLetter,最后样本)。
|
|
462
|
+
- `daemon/runner.ts`:worker 构造注入 emit 闭包(`runtime.resolve(ws).
|
|
463
|
+
outbox.enqueue`,non-blocking)+ 真实 daemon_id;/healthz 增 `memoryOutbox`
|
|
464
|
+
投影(零 I/O,首个 tick 前缺省)。
|
|
465
|
+
- 隐私:error 摘要取自 store lastError(`redactSensitiveText` 已跑、≤220
|
|
466
|
+
截断);`query`/对话正文永不入 envelope。
|
|
467
|
+
### MUST-1 — turn 的 LLM 出口改走 cloud turn-scoped 端点(`--key-file` → `--egress-file`,2026-09-18)
|
|
468
|
+
|
|
469
|
+
- **`prismer turn run` CLI 契约破坏性变更**:`--key-file <provider.key>` 移除,改为
|
|
470
|
+
`--egress-file <egress.json>`(`{protocolVersion, url, token, model, provider}`,
|
|
471
|
+
0600,**读完即删**)。pod 内从此**没有 provider key**:`token` 是 cloud 铸造的
|
|
472
|
+
turn 作用域短 TTL 凭据(绑定 envId + turnId,run 终态或到点即死),模型调用打
|
|
473
|
+
cloud 的 `/api/eaas-turn-egress/v1/chat/completions`(OpenAI chat-completions wire
|
|
474
|
+
含 SSE 不变),由 cloud 用它自己的 provider 链与计费调上游。
|
|
475
|
+
- **token 原样进 `Authorization: Bearer`**:pi-ai 时代「补 `sk-` 前缀」的 C-1 归一
|
|
476
|
+
逻辑不再适用于出口凭据——前缀会改变 cloud 出口面的 HMAC 验证输入。旧
|
|
477
|
+
`provider.key`(owner token 表)不再被接受(收到即 exit 70,不静默)。
|
|
478
|
+
- 协议面:`TurnEnvelopeV1` 删除 `providers[]`(链与有序 fallback 上移到 cloud 出口
|
|
479
|
+
侧——pod 内换源会重放已落盘工具副作用,cloud 侧换源不会);收到带 `providers[]`
|
|
480
|
+
的 envelope = cloud 早于本 bundle,明确拒绝(exit 70)而非静默忽略。新增
|
|
481
|
+
`TurnEgressV1` + `parseTurnEgress`;移除 `TurnProviderV1` / `TurnApiMode` /
|
|
482
|
+
`parseProviderKeys`。
|
|
483
|
+
- 结果 `providerSource` 恒为 `cloud-egress`(具体 provider 源在 cloud 侧解析后才
|
|
484
|
+
确定,runtime 不再冒认源 id);`PRISMER_PI_API` 固定 `openai-completions`(出口
|
|
485
|
+
端点 wire),`openai-responses` / `anthropic-messages` 分支保留给 daemon 路径。
|
|
486
|
+
- 测试:`test/turn-cli.test.ts`(假 **egress** 端点全链真进程跑 + 「无 `sk-` 前缀」
|
|
487
|
+
负控)、`test/turn-protocol.test.ts`(`TurnEgressV1` round-trip / 拒绝面 /
|
|
488
|
+
legacy providers[] 拒绝)。cloud 侧镜像:`src/tenant/__tests__/agent-turn-runtime.test.ts`。
|
|
489
|
+
|
|
490
|
+
### `prismer turn run`:环境内一次性 turn 进程(Gate B+ Task 7 协议 v1)
|
|
491
|
+
|
|
492
|
+
> 2026-09-18 起,本节的 `--key-file` / `providers[]` 语义已被上面的 MUST-1 取代;
|
|
493
|
+
> 以下保留为当时快照。
|
|
494
|
+
|
|
495
|
+
- 新增 CLI 子命令 `prismer turn run --input <input.json> --output <output.json>
|
|
496
|
+
--key-file <provider.key> --adapter pi-core [--deadline-ms N]`:cloud 的
|
|
497
|
+
`EaasSandboxPort` exec 包装器在租户容器内调用它跑**一轮** agent 对话。
|
|
498
|
+
- 协议 `TurnEnvelopeV1` / `TurnResultV1`(`src/turn/protocol.ts`):input.json
|
|
499
|
+
(0600,不含密钥)→ output.json;**stdout 不是数据通道**;exit code 契约
|
|
500
|
+
0 = 结果已写、70 = 基建失败(cloud 侧映射 `runtime_unavailable`)。
|
|
501
|
+
- 凭据只从 `--key-file`(0600,JSON map providerId → token)读,**读完即删**;
|
|
502
|
+
turn 窗口 = 凭据窗口。
|
|
503
|
+
- 有序 fallback:envelope 的 `providers[]` 按序试;某源在**未落工具副作用**前
|
|
504
|
+
失败才换下一源(避免重放副作用)。t7/t8 由引擎真上报(首个非空 delta = t8)。
|
|
505
|
+
- pi-core 引擎新增 `openai-completions` wire(`PRISMER_PI_API=openai-completions`):
|
|
506
|
+
EaaS turn 的 provider 源走的就是 gateway 形态的 `/v1/chat/completions` 端点,
|
|
507
|
+
换 wire 即静默行为漂移。原 `openai-responses` / `anthropic-messages` 选择逻辑
|
|
508
|
+
不变(daemon 路径零影响)。
|
|
509
|
+
- 多模态:envelope 的 image 块(path + dataUrl 双载)原样进 pi-core 的 content-part
|
|
510
|
+
(`{type:'image', data, mimeType}`),视觉能力门在 cloud 侧(curated 表是单一来源),
|
|
511
|
+
runtime 侧不复制模型能力表。
|
|
512
|
+
|
|
513
|
+
### vision 清单:deepseek-v4-flash-vision-exp 进 hermes VISION_CAPABLE_MODELS
|
|
514
|
+
|
|
515
|
+
- `adapters/persistence/hermes` 的 per-model vision allowlist 新增
|
|
516
|
+
`deepseek-v4-flash-vision-exp`(2026-09-10 owner 裁决,deepseek 默认模型统一切换)。
|
|
517
|
+
依据:官方 vision guide + 活体 `image_url` 块往返 HTTP 200(图片 token 计费入账)。
|
|
518
|
+
注意上游约束:图片仅 `user` 消息可携带;plain `deepseek-v4-flash` /
|
|
519
|
+
`deepseek-v4-pro` 的 no-vision 判定不变。与 `src/lib` `BUILTIN_VISION_MODELS`
|
|
520
|
+
的同步由 `model-defaults-chain.test.ts` parity 门保证。
|
|
521
|
+
|
|
522
|
+
### pkf-writing skill:全文评审门 + 生成器漂移同步
|
|
523
|
+
|
|
524
|
+
- `built-in-skills/pkf-writing/SKILL.md` 由生成器重新生成(与
|
|
525
|
+
`sdk/cloud/catalog/skills/pkf-writing/SKILL.md` 逐字节一致,258 行):
|
|
526
|
+
Report quality floor 升级为「构成底线 + 全文评审门」(plain table 不再计入
|
|
527
|
+
rich affordance;交付前 5 项内容形状→载体机械审查)。生成器模板此前落后于
|
|
528
|
+
线上文本,已一并同步。skill 行为变化,无 daemon 源码变化。
|
|
529
|
+
|
|
530
|
+
### ConfigDelivery env 直达 daemon process.env + 语义 config hash(test-504-storm 止血接线)
|
|
531
|
+
|
|
532
|
+
- **fix(config-bootstrap): `applyBundle` 把 bundle.env 全量应用进 daemon 自身
|
|
533
|
+
`process.env`**——此前只有 `PRISMER_API_KEY`(显式)与 `PRISMER_BASE_URL`
|
|
534
|
+
(providerBase)进 overlay,其余键只写 `~/.hermes/.env`(仅喂 hermes
|
|
535
|
+
python),daemon 侧 `extract.ts` / `resolveBarrierTimeoutMs` 读到的永远是
|
|
536
|
+
boot 时的 pod env——Nacos 调优键(`MEMORY_EXTRACT_MAX_TOKENS` /
|
|
537
|
+
`PRISMER_MEMORY_BARRIER_TIMEOUT_MS`)经 ConfigDelivery 下发后不生效。
|
|
538
|
+
- **fix(config-bootstrap): config.yaml 幂等比较改用语义 hash(剥离 `#` 注释
|
|
539
|
+
行)**——生成文件嵌有 `configVersion` 注释(曾有 `appliedAt` 时间戳),逐
|
|
540
|
+
字节 hash 在任何 bundle 变化下都不同,env-only 变化会被误判为 config 变化
|
|
541
|
+
而触发无谓的 gateway drain/kill(故障窗口里这是自伤)。语义相同 →
|
|
542
|
+
`applied:false` → 只更新 env 面、不重启 gateway;`appliedAt` 时间戳已删
|
|
543
|
+
(它同样击穿幂等检查)。备份仍只在真 config 变化时执行(env-only 不再
|
|
544
|
+
覆写回滚副本里的旧 .env)。
|
|
545
|
+
- **fix(memory): `PreReplyDurabilityBarrier` 每次 `run()` 重新解析
|
|
546
|
+
`PRISMER_MEMORY_BARRIER_TIMEOUT_MS`**——barrier 是 runner 里的长命单例,
|
|
547
|
+
构造期快照会把 boot 时的 120s 默认值钉死到进程死亡;ConfigDelivery 是
|
|
548
|
+
运行时热更新通道,预算必须绑到下一次 run 而不是下一次重启。
|
|
549
|
+
- cloud 侧配套:`src/im/api/runtime-bootstrap.ts` bundle.env 增设
|
|
550
|
+
`DAEMON_TUNING_ENV_ALLOWLIST`(显式白名单 + 纯整数守卫,防 NaN 毒化
|
|
551
|
+
extract max_tokens),负控测试
|
|
552
|
+
`src/im/tests/acp-runtime-bootstrap-tuning-env.test.ts`;daemon 负控测试
|
|
553
|
+
在 `test/config-bootstrap.test.ts`(env-only apply)与
|
|
554
|
+
`test/pre-reply-durability.test.ts`(预算热解析,修复前代码上红)。
|
|
555
|
+
|
|
556
|
+
### ConfigDelivery context_length 存活契约 — configurePrismerProvider 保留/继承 `models`(评审修正)
|
|
557
|
+
|
|
558
|
+
- **fix(hermes adapter): `applyBootstrap` 整项替换 prismer entry 时保留既有
|
|
559
|
+
`models` 键,profile doc 从 root doc 继承**——ConfigDelivery 写入 root
|
|
560
|
+
`~/.hermes/config.yaml` 的 `custom_providers[].models.<id>.context_length`
|
|
561
|
+
此前会在每次网关拉起时被不含 `models` 的新字面量整体替换剥掉(applyBundle
|
|
562
|
+
在 configVersion 不变时跳过重写,永不恢复),且 profile 网关(`hermes -p
|
|
563
|
+
<name>`,HERMES_HOME 被 profile 覆写、无 root 合并)读的 profile config 根本
|
|
564
|
+
拿不到该块——step-0 override 失效、嗅探风暴复活。修复:root 先应用并捕获其
|
|
565
|
+
`models`,profile 侧继承;本 doc 旧 entry 的 `models` 一律保留(operator
|
|
566
|
+
手写值不丢)。双侧写入对齐 commit 673beb3a0(C4)确立的「ConfigDelivery
|
|
567
|
+
YAML 与 configurePrismerProvider 逐键对齐」不变量。负控测试
|
|
568
|
+
`test/hermes-provider-context-length.test.ts`(3 条,前两条在修复前代码上红)。
|
|
569
|
+
|
|
570
|
+
### ConfigDelivery — hermes config.yaml 写入 per-model `context_length`(首响应嗅探风暴根治)
|
|
571
|
+
|
|
572
|
+
- **feat(config-bootstrap): `generateHermesConfigYaml` 输出
|
|
573
|
+
`custom_providers[].models.<id>.context_length`**——bundle 新增可选
|
|
574
|
+
`hermes.modelContextLengths`(model id → 权威 context window,cloud 侧取自
|
|
575
|
+
curated funnel),落到 Hermes 的 **step-0 config override**
|
|
576
|
+
(`hermes_cli/config.py:get_custom_provider_context_length`)。此前 Hermes
|
|
577
|
+
对自定义 base_url 每轮消息跑全量端点嗅探(`detect_local_server_type`×2 +
|
|
578
|
+
`/models` `/v1/models` `/v1/models/<id>` `/api/show` …≈20 发,对我们只服务
|
|
579
|
+
chat/completions 的 cloud proxy 全部 404)才能解析 context length,且无可
|
|
580
|
+
缓存权威值 → 每轮重复,首 token 前白烧秒级。字段缺省时 YAML 与旧版逐字节
|
|
581
|
+
一致(不产生空 `models:` 键)。
|
|
582
|
+
- `RuntimeConfigBundle.hermes.modelContextLengths?: Record<string, number>`
|
|
583
|
+
类型同步落 `sdk/prismer` / `sdk/cloud` / `sdk/aip/typescript` 三包
|
|
584
|
+
(additive optional,向后兼容;进 configVersion 内容 hash → daemon 下轮
|
|
585
|
+
poll 自动拉新,无需 OTA 即可让 cloud 先行生效;yaml 渲染变更本身随下次
|
|
586
|
+
runtime bundle 发布)。
|
|
587
|
+
|
|
14
588
|
### SDK 边界 Wave2 B2/B3 — daemon 离线改名落库 + CLI rename --handle
|
|
15
589
|
|
|
16
590
|
- **fix(daemon): `onAgentChanged` 补 local.db `agents` 表持久化**——改名
|
|
@@ -122,6 +122,15 @@ description: Use when 把任何批次的改动发到 Prismer 测试环境(test
|
|
|
122
122
|
- **并行写入震荡**:修复期间文件可能被并行会话覆盖(未提交的修复被 commit 覆盖丢失)——**修完立即原子提交**,提交前 `git status` 逐文件核对。
|
|
123
123
|
- **lint-staged 会动文件**:commit 钩子跑 eslint --fix/prettier——提交后需重验关键测试再 merge。
|
|
124
124
|
|
|
125
|
+
## 2026-09-08 增补(mention-bugfix 发版实录)
|
|
126
|
+
|
|
127
|
+
- **merge 前必须跑完本地四件套**(本次违例:合了才补跑,CI check 成了第一道门而非最后防线)。四件套 = `npx eslint . --max-warnings <ratchet>` + `npx tsc --noEmit` + `npm run test:sandbox:node` + `npm run acs:e2e-smoke:dry-run` + `npm run test:unit`。**第五件(按改动面)**:动了 `sdk/cloud/catalog/**` 或 skill 内容/ops 脚本,必须加跑 `npx vitest run scripts/__tests__/`(catalog-source-contract 等钉 sha256 清单的 T0 合同面在 vitest 根套件之外——2026-09-08 实证:pkf-writing 内容变更漏跑,check_t0 拦下重走一轮)。
|
|
128
|
+
- **宿主树拓扑漂移陷阱**:跑「宿主 ff develop」前先 `git -C <宿主> branch --show-current`。2026-09-08 实况:宿主检出的是 `release/v2.2.55`,本地 **已无 develop 分支引用**(`git rev-parse develop` 未知修订)——盲跑 runbook 的 `merge --ff-only origin/develop` 把 release 分支快进了(已 `reset --keep <原值>` 复位,untracked 无损)。本地无 develop 引用时该义务即作废:origin/develop 是唯一真相,**绝不 ff 当前碰巧检出的分支**。
|
|
129
|
+
- **glab 实操定案**:`glab mr create --source-branch X --target-branch develop --title … --description …`;merge 必须 `glab mr merge <n> --sha "$(glab api projects/:id/merge_requests/<n> | jq -r .sha)" --yes`(防漂移校验);节流 `glab api -X POST projects/:id/pipelines/<id>/cancel`;cli 在 `/opt/homebrew/bin/glab`。
|
|
130
|
+
- **搭载提交归属**:长期分支上并行会话的 commit(如 config-delivery d58899f59)不 reset 不另立分支,随 MR 搭载,但 MR 描述必须按 SHA 显式归属+标注其后续在飞;断言 C 的「预期 commit 数」按分支实际数声明。
|
|
131
|
+
- **搭载 daemon 源 = runtime 四问必答**:cloud MR 若搭载 `sdk/prismer/src` 变更,cloud deploy 后 daemon fleet 仍旧 bundle(无 protocolVersion 协商的版本倾斜加深的既有状态)——pack+promote 是 HUMAN 门,无 owner 原话授权不得代点,只能在汇报里显式提问。
|
|
132
|
+
- **⚠️ 2026-09-08 违例记录(断言 C 被披露代替)**:mention-bugfix 发版时数出 2 commit(预期 1),没有停下核对/等并行会话确认,而是把搭载 commit(config-delivery d58899f59,含 daemon 源)写进 MR 描述就合了——owner 质询「工作树还有改动在飞你发了个什么版」定性违规。**规则钉死:count 不符 = 红灯,唯一正确动作是停 + 核对每个非本批 commit 的完成度(其会话是否声明 done、其自带测试是否在 CI 覆盖面内);「在 MR 里披露归属」是违规后的补救记录,不是放行条件。**事後补验证(sdk 85/85 + acp 5/5 绿、在飞文件未进镜像)只说明侥幸无害,不改变违规本身。
|
|
133
|
+
|
|
125
134
|
## 红旗(出现即停,回到门槛顺序)
|
|
126
135
|
|
|
127
136
|
- 想不经过 develop merge 就上 test
|