Commit Graph
4290 Commits
Author SHA1 Message Date
Tianyi Cui c954a07535 docs(session): separate experimental persistence catalogue 2026-10-05 18:09:01 +08:00
Tianyi Cui bb405d51fa fix(scripts): normalize plugin record compiler paths 2026-10-05 17:43:56 +08:00
Tianyi Cui 9a4a750a05 Merge master into plugin record catalogue 2026-10-05 17:37:23 +08:00
Tianyi Cui 33b98ec91d test(session): reuse catalogue fixture cleanup 2026-10-05 17:31:08 +08:00
Tianyi Cui dd302f718b feat(session): catalogue experimental plugin records 2026-10-05 17:20:26 +08:00
Tianyi Cui f5dbbd8ea4 Merge pull request #5701 from deepseek-harness/worktree/cot-translation/service
feat(translator): add anonymous Bing and Google translation
2026-10-05 16:35:16 +08:00
Tianyi Cui d32ecfe1e4 test(infra): compare wheel bytes without deep matcher traversal 2026-10-05 11:46:52 +08:00
Tianyi Cui 3d03717a0e docs(translator): register model effects and generated package list 2026-10-05 10:00:30 +08:00
Tianyi Cui f1250c6e36 feat(translator): add anonymous Google and Bing translation service 2026-10-05 09:55:25 +08:00
Tianyi Cui 3a221c87e3 fix(scripts): find plugin record calls spelled with legacy octal escapes
A sloppy-mode .cjs or .js file can spell the name as '\141ppendPluginRecord',
which TypeScript decodes to appendPluginRecord, but the prefilter only
removed the backslash and skipped the file. The prefilter now decodes a
legacy octal escape as TypeScript does, taking three digits only after
0 to 3, so the value stays within 0o377. The spec rejects two spellings
that use three-digit octal escapes, and tests the decoder itself for
the digit limit, which no spelling of the name, whose letters are all
0o1xx, can exercise.
2026-10-05 09:55:14 +08:00
Tianyi Cui 534acc5952 Merge pull request #3649 from deepseek-harness/fix/packed-install-private-npm-cache
fix(release): isolate packed-install npm cache
2026-10-05 09:23:14 +08:00
Tianyi Cui c1b0e84b95 Merge pull request #5079 from deepseek-harness/worktree/python-live-smoke-ack-20260923
test(python): accept standalone live smoke acknowledgements
2026-10-05 09:18:47 +08:00
Tianyi Cui d6b2430df1 Merge master checkpoint a2ac28a6 into packed-install cache fix 2026-10-05 09:09:23 +08:00
Tianyi Cui 3ca9334868 Merge observed master checkpoint to resolve Python smoke pairing conflict 2026-10-05 09:05:54 +08:00
Tianyi Cui 8c6d23c128 fix(scripts): find plugin record calls spelled with any escape
The caller gate parsed only files whose text held appendPluginRecord or a
\u escape, so a release package could reach the function through
S['\x61ppendPluginRecord'], a \u{61} code point escape, a needless
character escape, or a line continuation, which TypeScript reads as the
same string. The gate now also parses a file when its text with every
escape unescaped holds the name, and its spec rejects each spelling.
2026-10-05 08:57:58 +08:00
Tianyi Cui 1678f0f5f5 fix(session): address review of plugin records
- Make the record commit an ES private method, so appendPluginRecord()
  is its only runtime entry.
- Document PluginRecordType and PluginRecord on the session subsystem
  page, and state in the README and JSDoc that the V3-to-V4 edge renames
  unknown ignorable V3 events into the plugin: namespace and that plugins
  outside this repository must not call the writer.
- The caller gate parses only files that contain the name or a \u
  escape, documents that wildcard re-exports are not reported, and its
  spec reads a temporary repository instead of this checkout.
- Cover Session.fromRestore in the record test and name SessionEventMap
  in the catalog generator's diagnostic.
2026-10-05 08:57:58 +08:00
Tianyi Cui 75542dd10a feat(session): let experimental packages append plugin records
Add appendPluginRecord(), which appends one ignorable event whose type is
`plugin:` followed by lowercase slash-separated segments, and
pluginRecordOf(), which reads such an event back. Records are not
SessionEventMap members, so the persistence catalog is unchanged; a build
that does not recognize one retains and skips it, and records never enter
the model-visible surface. Resume and fork carry them with the log, and a
format migration keeps them on a best-effort basis.

Only production source under packages/experimental/ may call the writer.
The verify-plugin-record-callers hygiene gate checks every reference in
repository sources, and the persistence catalog generator rejects a
SessionEventMap member in the plugin: namespace.

Session.append() and the record writer share one commit path, so a record
follows the same reentrancy, detach, and observer-containment rules. The
ignorable-events decision, the session README, the format-version
cookbook, and the plugin-author practices describe the records.
2026-10-05 08:57:58 +08:00
Tianyi Cui a809d9289d fix(release): preflight channels without relying on latest 2026-10-03 09:52:54 +08:00
Tianyi Cui c1dee0e6f6 test(release): allow inputs on manual publishing workflows 2026-10-03 09:34:42 +08:00
Tianyi Cui 185b9c59e7 feat(release): support isolated npm channels 2026-10-03 09:20:13 +08:00
Tianyi Cui da00f7f535 Merge pull request #5623 from deepseek-harness/feat/experimental-claude-code-mods-20261002
feat(experimental): add Claude Code mods bridge
2026-10-03 07:44:05 +08:00
Tianyi Cui 44d678e279 fix(docs): map example plugin aliases to themselves in doc-typecheck
The examples subpath alias of the mods bridge points at TypeScript entries
that ship no declarations; a documentation fence never imports them, so the
mapper keeps the authored path instead of failing the gate.
2026-10-03 06:33:11 +08:00
Tianyi Cui 2db0c83e86 docs(experimental): compatibility page, READMEs, and catalogs for mods as plugins
docs/subsystems/claude-code-mods.md lists every way a mod behaves
differently through the bridge than under Claude Code 2.1.287 — packaging,
events, the chain, $ members, drawing, testing, and the example mods,
including the four official mods assessed by reading. The bridge README
describes defineMod, the band, and the test kit; the band package gets its
README; the group index, release families, config and client catalogs,
module and seam graphs, and the Cordis API catalog are regenerated.
2026-10-03 03:19:43 +08:00
Turtle c71cd255ac test(scripts): expect the native config loader in build:bench 2026-10-02 13:03:29 +08:00
Turtle 500614c0d5 fix(build): pin tsdown to the native config loader
Root build scripts, the desktop bundle and the dev:web watcher pass the
native loader so tsdown never selects the undeclared unrun fallback. A spec
covers the build.ts rejection path.
2026-10-02 12:48:01 +08:00
Turtle f3013b2d8d fix(build): reject Node processes without TypeScript type stripping
Without process.features.typescript, tsdown falls back to the undeclared
unrun loader, which fails to import and, once installed, resolves
import.meta.url in packages/client/tsdown.client.ts to the entry config.

Refs #5622
2026-10-02 12:31:36 +08:00
Tianyi Cui 6e948732d1 test(experimental): cover the mods bridge's process cwd fallback on Windows and list the package in the release family
Also narrow the mod tool's rendered value to the string its schema admits and
bind the registration's catch before calling it untyped.
2026-10-02 11:53:56 +08:00
Turtle e1c49269b2 Merge pull request #5517 from deepseek-harness/turtle/remove-invariants-ccf1396aaf61
refactor: remove runtime invariant plugins
2026-10-01 17:50:15 +08:00
imccyu 7b658a9e94 Merge pull request #5597 from deepseek-harness/inspector-devtools-source
build(inspector): compile DevTools locally from npm sources
2026-10-01 17:29:45 +08:00
imccyu ad22e6c80f build(inspector): compile DevTools from pinned npm sources 2026-10-01 16:51:21 +08:00
Turtle 819eb8078e Merge origin/master into turtle/remove-invariants-ccf1396aaf61 2026-10-01 16:33:09 +08:00
yudshj d0916a8f90 chore(office): bump LibreOffice Kit to 0.1.5 2026-10-01 09:27:11 +08:00
imccyu 1274fa1047 Merge pull request #5259 from deepseek-harness/feat/session-inspector
feat(experimental): 增加会话数据检查与可选开发工具包
2026-10-01 00:59:35 +08:00
imccyu 2ba4144a7e feat(web): show parsed tool arguments during preparation 2026-10-01 00:19:52 +08:00
imccyu 732dd913cf feat(inspector): embed Chrome DevTools and bundle optional diagnostics 2026-10-01 00:14:13 +08:00
imccyu 0f2cda8c22 fix(dev): retain readiness hooks and stabilize Web scenario waits 2026-10-01 00:02:15 +08:00
Tianyi Cui c7f66d13a6 docs(notes): prune redundant active decision records 2026-09-30 23:20:22 +08:00
Turtle 97bbbdfa13 Merge pull request #5489 from deepseek-harness/fix/windows-coverage-electron
fix(ci): stabilize Windows coverage and tooltip snapshots
2026-09-30 18:34:29 +08:00
imccyu 02629473c6 Merge pull request #5497 from deepseek-harness/worktree-bundledep
refactor(deps): align plugin dependencies with runtime ownership
2026-09-30 18:16:07 +08:00
turtle1999 e0358d76bc docs(skills): follow the package-root and subpath icon rule
Ordinary plugins now show exported icons, and subpath plugins use
<subpath>/icon instead of a package.json. Update the display checklist
and nested-package gate cases to match.
2026-09-30 18:10:38 +08:00
turtle1999 71fd3cf2b5 test(skills): cover icon precedence and native diagnostic paths 2026-09-30 18:10:38 +08:00
turtle1999 176e961c33 fix(skills): validate exported resources in nested templates 2026-09-30 18:10:38 +08:00
Turtle 4ac4e95460 Merge pull request #5394 from deepseek-harness/fix/bundle-only-metadata
fix(plugins): read package.json only for package-root plugins
2026-09-30 18:10:34 +08:00
turtle1999 fe56439edc refine(ci): keep Electron preparation independent of build 2026-09-30 17:57:24 +08:00
turtle1999 40133c707f fix(ci): provision Electron before Windows coverage 2026-09-30 17:57:24 +08:00
turtle1999 f8a274b76e fix(plugins): name declaring manifests and reject built display manifests
Manifest icon diagnostics name the package.json the author edits.
verify-package-meta rejects a package.json export that resolves to build
output instead of reading it, and PackageManifest.exports uses a narrow
export-target type.
2026-09-30 17:54:55 +08:00
Yichen Yanandliukx0205 a7c3ad99bc feat(web): advertise a configured public application URL (#3972)
* feat(web): advertise a configured public application URL

* test(session): restore migration verifier prefix coverage

* test(llm): synchronize idle timeout with provider request

* Remove unrelated migration Worker lifecycle changes

---------

Co-authored-by: liukx0205 <[email protected]>
2026-09-30 17:46:52 +08:00
Chinesezjc 3e5231bc6f Merge origin/master into feat/preset-scoped-schedule-tools
Resolutions:
- `docs/subsystems/schedule.*` and `packages/client/ui-schedule/README.*` keep
  this branch's shipped-composition text with master's newer wording (Rules and
  Records tabs, the icon-button linked-session layout).
- `docs/event-producer-consumer.*` regenerated by `gen-doc-graphs`.
2026-09-30 13:49:30 +08:00
imccyu 3e531a13d5 Merge pull request #5507 from deepseek-harness/tool-argument-order
fix(tools): 明确路径和描述字段的生成顺序
2026-09-30 13:44:40 +08:00
Turtle f028f25667 refactor: remove runtime invariant plugins
Delete @deepseek-ai/dsh-invariants, every package's ./invariant companion
and its tests, the invariant gates and Vitest setup, the scoped-event
resolver generator, and the INVARIANT-coded listener rethrow paths.
Update docs, READMEs, Agent Notes, and add an upgrade guide.
2026-09-30 12:52:18 +08:00