@ngockhoale/ukit 1.3.0 → 1.3.1
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 +10 -0
- package/README.md +3 -3
- package/package.json +1 -1
- package/src/core/buildPlan.js +29 -1
- package/src/core/runtimeConfig.js +1 -1
- package/templates/.codex/README.md +1 -1
- package/templates/AGENTS.md +1 -1
- package/templates/CLAUDE.md +1 -1
- package/templates/ukit/README.md +1 -1
- package/templates/ukit/storage/config.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,16 @@ All notable changes to UKit are documented here.
|
|
|
4
4
|
|
|
5
5
|
## Unreleased
|
|
6
6
|
|
|
7
|
+
## 1.3.1 - 2026-05-06
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- Fixed `ukit install` failing with `ENOENT` when a published/global package is missing optional `templates/.gitignore`; install now uses a built-in fallback.
|
|
12
|
+
|
|
13
|
+
### Tests
|
|
14
|
+
|
|
15
|
+
- Added a regression test for package artifacts without `templates/.gitignore`.
|
|
16
|
+
|
|
7
17
|
## 1.3.0 - 2026-05-06
|
|
8
18
|
|
|
9
19
|
### Added
|
package/README.md
CHANGED
|
@@ -68,7 +68,7 @@ If maintainers roll out a newer CLI build, the in-project workflow still stays t
|
|
|
68
68
|
- `.ukit/` — hidden shared runtime storage for config, cache, and cross-agent memory
|
|
69
69
|
- `docs/` — PROJECT / MEMORY / STATUS / TASKS / WORKLOG baseline
|
|
70
70
|
|
|
71
|
-
## UKit v1.3.
|
|
71
|
+
## UKit v1.3.1 Runtime
|
|
72
72
|
|
|
73
73
|
UKit now installs a hidden shared local runtime at `.ukit/` for production-oriented state that should survive across agent sessions:
|
|
74
74
|
|
|
@@ -86,7 +86,7 @@ When long sessions approach the compact threshold, UKit now uses a conservative
|
|
|
86
86
|
- compact only safe-zone history/noise
|
|
87
87
|
- preserve active task, rules, decisions, and current code focus
|
|
88
88
|
|
|
89
|
-
UKit v1.3.
|
|
89
|
+
UKit v1.3.1 keeps the same shared runtime contract while adding Safe Patch Protocol guardrails and the local AI task queue alongside living project status routing:
|
|
90
90
|
|
|
91
91
|
- install globally with `npm install -g @ngockhoale/ukit`
|
|
92
92
|
- keep using the exact same human workflow inside projects: `ukit install`
|
|
@@ -98,7 +98,7 @@ UKit v1.3.0 keeps the same shared runtime contract while adding Safe Patch Proto
|
|
|
98
98
|
- keep concrete debug/implementation/review prompts primary, so project status never replaces source/index-first task work
|
|
99
99
|
- quietly guard risky AI edits with Safe Patch Protocol: stale/ambiguous specs are blocked, shared-risk whole-file writes are discouraged, and internal helpers preserve UTF-8 BOM/no-BOM plus LF/CRLF for multilingual text
|
|
100
100
|
|
|
101
|
-
UKit v1.3.
|
|
101
|
+
UKit v1.3.1 also keeps the fast path improvements from the recent runtime releases:
|
|
102
102
|
|
|
103
103
|
- Vietnamese prompts now normalize more effectively for English-heavy code symbols and paths
|
|
104
104
|
- localized simple direct-target lanes skip extra previous-context / recent-output work when it would not change the next action
|
package/package.json
CHANGED
package/src/core/buildPlan.js
CHANGED
|
@@ -25,6 +25,14 @@ const BINARY_TEMPLATE_EXTENSIONS = new Set([
|
|
|
25
25
|
'.pdf',
|
|
26
26
|
]);
|
|
27
27
|
|
|
28
|
+
const FALLBACK_ROOT_GITIGNORE_TEMPLATE = 'node_modules/\n.env\n*.log\n.DS_Store\n';
|
|
29
|
+
|
|
30
|
+
function isRootGitignoreItem(item) {
|
|
31
|
+
return item?.id === 'gitignore-root'
|
|
32
|
+
&& item?.sourceTemplate === '.gitignore'
|
|
33
|
+
&& item?.targetPath === '.gitignore';
|
|
34
|
+
}
|
|
35
|
+
|
|
28
36
|
function safeResolve(basePath, relativePath) {
|
|
29
37
|
const resolvedPath = path.resolve(basePath, relativePath);
|
|
30
38
|
const relativeToBase = path.relative(basePath, resolvedPath);
|
|
@@ -118,7 +126,27 @@ export async function buildInstallPlan({
|
|
|
118
126
|
});
|
|
119
127
|
} else {
|
|
120
128
|
const sourcePath = safeResolve(templatesRoot, item.sourceTemplate);
|
|
121
|
-
|
|
129
|
+
let stat;
|
|
130
|
+
try {
|
|
131
|
+
stat = await fs.stat(sourcePath);
|
|
132
|
+
} catch (error) {
|
|
133
|
+
if (error?.code === 'ENOENT' && isRootGitignoreItem(item)) {
|
|
134
|
+
const targetPath = safeResolve(projectRoot, item.targetPath);
|
|
135
|
+
explicitTargetPaths.add(targetPath);
|
|
136
|
+
planEntries.push({
|
|
137
|
+
id: item.id,
|
|
138
|
+
type: item.type,
|
|
139
|
+
sourcePath: null,
|
|
140
|
+
targetPath,
|
|
141
|
+
mergeStrategy: item.mergeStrategy,
|
|
142
|
+
renderedContent: FALLBACK_ROOT_GITIGNORE_TEMPLATE,
|
|
143
|
+
requires: item.requires ?? [],
|
|
144
|
+
mode: 0o644,
|
|
145
|
+
});
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
throw error;
|
|
149
|
+
}
|
|
122
150
|
if (stat.isDirectory()) {
|
|
123
151
|
const nestedFiles = await walkDirectory(sourcePath);
|
|
124
152
|
const nestedStats = await Promise.all(nestedFiles.map((filePath) => fs.stat(filePath)));
|
|
@@ -12,7 +12,7 @@ Auto-generated by UKit for OpenAI Codex.
|
|
|
12
12
|
- Do not make end users memorize skill names, helper scripts, or routing internals unless they are debugging UKit itself.
|
|
13
13
|
- **Treat helper commands as internal orchestration. Do not ask end users to run them.**
|
|
14
14
|
|
|
15
|
-
## UKit v1.3.
|
|
15
|
+
## UKit v1.3.1 Shared Runtime
|
|
16
16
|
|
|
17
17
|
- Shared runtime state lives in `.ukit/storage/`.
|
|
18
18
|
- Treat `.ukit/storage/config.json` as the source of compact, token-pipeline, router, memory, validation, and Safe Patch guardrail toggles.
|
package/templates/AGENTS.md
CHANGED
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
- If a concrete verification lane is needed, prefer `node .claude/ukit/index/verify-context.mjs ...`.
|
|
44
44
|
- These helper/index commands are internal orchestration. Run them yourself when needed; never turn them into required end-user workflow.
|
|
45
45
|
|
|
46
|
-
## UKit v1.3.
|
|
46
|
+
## UKit v1.3.1 Shared Runtime
|
|
47
47
|
|
|
48
48
|
- Shared runtime state lives in `.ukit/storage/`.
|
|
49
49
|
- Treat `.ukit/storage/config.json` as the source of runtime toggles for compact, token pipeline, router, memory, validation, and Safe Patch behavior.
|
package/templates/CLAUDE.md
CHANGED
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
- **Do not ask normal contributors to run internal helper commands**; run them yourself or tell them to rerun `ukit install`.
|
|
43
43
|
- Do not ask normal contributors to memorize `ukit doctor`, `ukit diff`, `ukit uninstall`, or `ukit index ...` unless they explicitly need maintainer/debug help.
|
|
44
44
|
|
|
45
|
-
## UKit v1.3.
|
|
45
|
+
## UKit v1.3.1 Shared Runtime
|
|
46
46
|
|
|
47
47
|
- Shared runtime state lives in `.ukit/storage/`.
|
|
48
48
|
- Treat `.ukit/storage/config.json` as the source of runtime toggles for compact, token pipeline, router, memory, validation, and Safe Patch behavior.
|
package/templates/ukit/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# UKit Shared Runtime
|
|
2
2
|
|
|
3
|
-
This folder stores shared UKit runtime state for v1.3.
|
|
3
|
+
This folder stores shared UKit runtime state for v1.3.1 features.
|
|
4
4
|
|
|
5
5
|
- `storage/config.json` — runtime feature flags and defaults
|
|
6
6
|
- `storage/cache/` — prompt-cache, compact history, compact pressure state, output summaries, and preserved raw tool outputs under `storage/cache/tee/`
|