Extension 0.6.0: next-edit, token healing, TS errors context, cursor-move, prewarm
ci / build (push) Canceled after 0s
ci / build (push) Canceled after 0s
- shared/nextedit.ts: next-edit prompt format (region rewrite or NO_EDIT, Qwen spare special tokens) - shared/diagnostics.ts: TS errors near the cursor as context; symbols format 2 adds namespace imports - shared/prompt.ts: token healing (cut the half-typed word, force it via grammar), errors header section - daemon: model profiles carry contextFormat/errors/members/nextEdit; /v1/next-edit with edit-burst tracking; /v1/prewarm; /v1/debug/last; token healing on by default - extension: next-edit decorations (Tab apply / Esc dismiss), suggest on cursor move, prewarm on focus, Show Last Prompt, update check against releases, diagnostics in the edit recorder - models/README: training-data attribution; release script profiles for stage-d/stage-e - .gitea/workflows/ci.yml: build + test, publish release on vscode-v* tags (needs a runner + RELEASE_TOKEN) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J39imRDT8L7xYbWzsVWd8A
This commit is contained in:
@@ -13,11 +13,19 @@ import crypto from 'node:crypto'
|
||||
import { parseArgs } from 'node:util'
|
||||
|
||||
const repo = path.resolve(path.dirname(new URL(import.meta.url).pathname), '..')
|
||||
const { values, positionals } = parseArgs({ options: { from: { type: 'string', default: path.join(repo, '..', 'models') } }, allowPositionals: true })
|
||||
const { values, positionals } = parseArgs({ options: {
|
||||
from: { type: 'string', default: path.join(repo, '..', 'models') },
|
||||
// Lock file of the public fine-tuning corpus (training workspace), for the attribution table.
|
||||
sources: { type: 'string', default: path.join(repo, '..', 'pipeline', 'config', 'public-sources.lock.json') },
|
||||
}, allowPositionals: true })
|
||||
const out = path.join(repo, 'models')
|
||||
|
||||
// Prompt layout each model was trained with (the extension only offers matching context modes).
|
||||
const profiles = {
|
||||
// Stage E: Stage D + next-edit prediction (shared/nextedit.ts)
|
||||
'stage-e': { order: 'spm', modes: ['symbols', 'simple'], defaultMode: 'symbols', contextFormat: 2, errors: true, members: true, nextEdit: true, description: 'Suffix-first FIM with symbols + TS errors, plus next-edit prediction (rewrites a region around the cursor)' },
|
||||
// Stage D: next-line / block-close / multi-line fixes, namespace-import symbols (format 2), TS errors in the header
|
||||
'stage-d': { order: 'spm', modes: ['symbols', 'simple'], defaultMode: 'symbols', contextFormat: 2, errors: true, members: true, description: 'Suffix-first FIM with symbols (incl. namespace imports) + TS errors; better next-line, block closing and multi-line completions' },
|
||||
'stage-c': { order: 'spm', modes: ['symbols', 'simple'], defaultMode: 'simple', description: 'Suffix-first FIM with repo/symbol-context headers (default)' },
|
||||
'stage-b': { order: 'spm', modes: ['raw'], defaultMode: 'raw', description: 'Suffix-first FIM without context headers (previous stage)' },
|
||||
}
|
||||
@@ -68,6 +76,10 @@ Fine-tuning data: permissively licensed (MIT) open-source TypeScript/Vue reposit
|
||||
the publisher's own code. Secrets were scrubbed from the training data.
|
||||
`)
|
||||
|
||||
const sources = fs.existsSync(values.sources) ? JSON.parse(fs.readFileSync(values.sources, 'utf8')) : []
|
||||
const sourcesTable = sources.length
|
||||
? ['| repository | commit | license |', '|---|---|---|', ...sources.map(src => `| [${src.url.replace(/^https:\/\/|\.git$/g, '')}](${src.url.replace(/\.git$/, '')}) | \`${src.commit.slice(0, 10)}\` | ${src.license} |`)].join('\n')
|
||||
: '(source list not available when this file was generated)'
|
||||
const row = m => `| \`${m.name}\` | ${m.description} | ${m.order} | ${m.modes.join(', ')} | ${(m.size / 1e6).toFixed(0)} MB |`
|
||||
fs.writeFileSync(path.join(out, 'README.md'), `# Models
|
||||
|
||||
@@ -107,6 +119,13 @@ Suffix-first (\`spm\`) order:
|
||||
\`stage-c\` additionally expects a repo-level header: \`<|repo_name|>{repo}\\n<|file_sep|>{path}\\n\`, optionally with a
|
||||
\`__symbols__.d.ts\` pseudo-file of available symbols before it.
|
||||
|
||||
## Training data
|
||||
|
||||
Fine-tuned on permissively licensed open-source repositories (below, pinned commits) and on the publisher's own
|
||||
code (not published). Secrets were scrubbed from all training data; held-out evaluation repos were never trained on.
|
||||
|
||||
${sourcesTable}
|
||||
|
||||
## License
|
||||
|
||||
Apache-2.0 ([LICENSE](LICENSE), [NOTICE](NOTICE)), as a derivative of Qwen2.5-Coder.
|
||||
|
||||
Reference in New Issue
Block a user