@hasna/instructions 0.4.22 → 0.4.23
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/dist/cli/index.js +19 -7
- package/dist/index.js +18 -6
- package/dist/lib/project-context.d.ts +4 -0
- package/dist/lib/project-context.d.ts.map +1 -1
- package/dist/mcp/index.js +3 -2
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -7918,6 +7918,9 @@ import {
|
|
|
7918
7918
|
writeFileSync
|
|
7919
7919
|
} from "fs";
|
|
7920
7920
|
import { basename, dirname, isAbsolute, join as join4, parse, relative, resolve } from "path";
|
|
7921
|
+
function managedObservationMaxBytes(relativePath) {
|
|
7922
|
+
return SESSION_MANAGED_OUTPUT_PATHS.includes(relativePath) ? SESSION_MANAGED_OUTPUT_MAX_BYTES : FOREIGN_INPUT_MAX_BYTES;
|
|
7923
|
+
}
|
|
7921
7924
|
function computeProjectContextSourceHash(value) {
|
|
7922
7925
|
const normalized = removeHashForFingerprint(value);
|
|
7923
7926
|
return `sha256:${sha2562(stableStringify(normalized))}`;
|
|
@@ -7986,7 +7989,7 @@ function planProjectContext(input) {
|
|
|
7986
7989
|
const inlineMarkerOverhead = nativeImports ? 0 : Buffer.byteLength(buildManagedBlock(bundle, "", `
|
|
7987
7990
|
`), "utf8");
|
|
7988
7991
|
const generated = buildCanonicalFragment(bundle, status, ageSeconds, PROJECT_CONTEXT_MAX_RENDERED_BYTES - Math.max(320, inlineMarkerOverhead), PROJECT_CONTEXT_MAX_APPROX_TOKENS - Math.max(80, Math.ceil(inlineMarkerOverhead / 4)));
|
|
7989
|
-
const previousTargetContent = existsSync4(paths.target) ? readUtf8RegularFile(paths.target, workspaceRoot) : null;
|
|
7992
|
+
const previousTargetContent = existsSync4(paths.target) ? readUtf8RegularFile(paths.target, workspaceRoot, managedObservationMaxBytes(relativePosix(workspaceRoot, paths.target))) : null;
|
|
7990
7993
|
const markerParse = parseManagedBlock(previousTargetContent ?? "", input.force === true);
|
|
7991
7994
|
if (markerParse.block && markerParse.block.id !== bundle.project.id) {
|
|
7992
7995
|
throw new ProjectContextError("MANAGED_BLOCK_CONFLICT", "managed block belongs to a different project");
|
|
@@ -8069,7 +8072,7 @@ function composeProjectContextSessionRender(input) {
|
|
|
8069
8072
|
if (!existsSync4(paths.target)) {
|
|
8070
8073
|
throw new ProjectContextError("MANAGED_BLOCK_CONFLICT", "project-context provider target is missing while durable context is active");
|
|
8071
8074
|
}
|
|
8072
|
-
const currentTarget = readUtf8RegularFile(paths.target, workspaceRoot);
|
|
8075
|
+
const currentTarget = readUtf8RegularFile(paths.target, workspaceRoot, managedObservationMaxBytes(relativePosix(workspaceRoot, paths.target)));
|
|
8073
8076
|
const currentMarkers = parseManagedBlock(currentTarget, false);
|
|
8074
8077
|
if (!currentMarkers.block) {
|
|
8075
8078
|
throw new ProjectContextError("MANAGED_BLOCK_CONFLICT", "project-context provider target lost its managed block");
|
|
@@ -9462,7 +9465,7 @@ function anchoredFileObservation(directory, name) {
|
|
|
9462
9465
|
if (!stat.isFile())
|
|
9463
9466
|
throw new ProjectContextHashRace("managed output is not a regular file");
|
|
9464
9467
|
const relativePath = relativePosix(directory.workspaceRoot, join4(directory.path, name));
|
|
9465
|
-
const maxBytes = directory.maxObservedBytes === undefined ? relativePath
|
|
9468
|
+
const maxBytes = directory.maxObservedBytes === undefined ? managedObservationMaxBytes(relativePath) : directory.maxObservedBytes;
|
|
9466
9469
|
if (maxBytes !== null && stat.size > maxBytes) {
|
|
9467
9470
|
throw new ProjectContextHashRace(`managed output exceeds the safe read limit: ${relativePath}`);
|
|
9468
9471
|
}
|
|
@@ -10109,7 +10112,7 @@ function assertNoSymlinkAncestors(path) {
|
|
|
10109
10112
|
throw new ProjectContextError("PROJECT_CONTEXT_SYMLINK_REJECTED", `workspace ancestor is a symlink: ${current}`);
|
|
10110
10113
|
}
|
|
10111
10114
|
}
|
|
10112
|
-
function readUtf8RegularFile(path, workspaceRoot, maxBytes =
|
|
10115
|
+
function readUtf8RegularFile(path, workspaceRoot, maxBytes = FOREIGN_INPUT_MAX_BYTES) {
|
|
10113
10116
|
assertNoSymlinkSegments(workspaceRoot, path);
|
|
10114
10117
|
const stat = lstatSync(path);
|
|
10115
10118
|
if (!stat.isFile())
|
|
@@ -10122,8 +10125,7 @@ function currentFileHash(path, workspaceRoot) {
|
|
|
10122
10125
|
if (!existsSync4(path))
|
|
10123
10126
|
return null;
|
|
10124
10127
|
const relativePath = relativePosix(workspaceRoot, path);
|
|
10125
|
-
|
|
10126
|
-
return sha2562(readUtf8RegularFile(path, workspaceRoot, maxBytes));
|
|
10128
|
+
return sha2562(readUtf8RegularFile(path, workspaceRoot, managedObservationMaxBytes(relativePath)));
|
|
10127
10129
|
}
|
|
10128
10130
|
function hashesStillMatch(expected, workspaceRoot) {
|
|
10129
10131
|
for (const [path, hash] of expected) {
|
|
@@ -10298,7 +10300,7 @@ function sha2562(content) {
|
|
|
10298
10300
|
function isRecord(value) {
|
|
10299
10301
|
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
10300
10302
|
}
|
|
10301
|
-
var PROJECT_CONTEXT_SCHEMA = "hasna.projects.project_context_bundle.v1", PROJECT_CONTEXT_MAX_INPUT_BYTES, PROJECT_CONTEXT_MAX_RENDERED_BYTES, PROJECT_CONTEXT_MAX_APPROX_TOKENS = 1000, PROJECT_CONTEXT_MAX_COMMANDS = 6, PROJECT_CONTEXT_MAX_WARNINGS = 3, PROJECT_CONTEXT_FRAGMENT_PATH = ".hasna/instructions/project-context.md", PROJECT_CONTEXT_MANIFEST_PATH = ".hasna/project-context-manifest.json", PROJECT_CONTEXT_CACHE_PATH = ".hasna/project-context-cache.json", PROJECT_CONTEXT_LOCK_PATH = ".hasna/project-context.lock", PROJECT_CONTEXT_SNAPSHOT_DIR = ".hasna/project-context-snapshots", PROJECT_CONTEXT_CACHE_SCHEMA = "hasna.instructions.project-context-cache/v1", PROJECT_CONTEXT_MANAGED_COMMENT = "Managed by @hasna/configs project context", SESSION_COMPATIBILITY_MANIFEST_MAX_BYTES, PROJECT_CONTEXT_LOCK_STALE_MS, LEGACY_CONFIGS_PACKAGE = "@hasna/configs", LEGACY_CONFIGS_COMPAT_VERSION = "0.2.45", LEGACY_CONFIGS_EXECUTABLE = "configs", PROJECT_KINDS, PROJECT_STATUSES, LINK_STATES, RESOLUTION_SOURCES, safeId, nullableId, producerSlug, producerName, safeOptionalDisplay, isoTimestamp, revisionSchema, hashSchema, absolutePath, commandArg, commandSchema, projectContextBundleSchema, storedManifestProjectContextSchema, storedManifestFileSchema, storedManifestObservationSchema, projectContextCacheSchema, ProjectContextError, ProjectContextHashRace, anchoredFsOps, atomicExchange, atomicExchangeLibraries;
|
|
10303
|
+
var PROJECT_CONTEXT_SCHEMA = "hasna.projects.project_context_bundle.v1", PROJECT_CONTEXT_MAX_INPUT_BYTES, PROJECT_CONTEXT_MAX_RENDERED_BYTES, PROJECT_CONTEXT_MAX_APPROX_TOKENS = 1000, PROJECT_CONTEXT_MAX_COMMANDS = 6, PROJECT_CONTEXT_MAX_WARNINGS = 3, PROJECT_CONTEXT_FRAGMENT_PATH = ".hasna/instructions/project-context.md", PROJECT_CONTEXT_MANIFEST_PATH = ".hasna/project-context-manifest.json", PROJECT_CONTEXT_CACHE_PATH = ".hasna/project-context-cache.json", PROJECT_CONTEXT_LOCK_PATH = ".hasna/project-context.lock", PROJECT_CONTEXT_SNAPSHOT_DIR = ".hasna/project-context-snapshots", PROJECT_CONTEXT_CACHE_SCHEMA = "hasna.instructions.project-context-cache/v1", PROJECT_CONTEXT_MANAGED_COMMENT = "Managed by @hasna/configs project context", SESSION_COMPATIBILITY_MANIFEST_MAX_BYTES, FOREIGN_INPUT_MAX_BYTES, SESSION_MANAGED_OUTPUT_MAX_BYTES, SESSION_MANAGED_OUTPUT_PATHS, PROJECT_CONTEXT_LOCK_STALE_MS, LEGACY_CONFIGS_PACKAGE = "@hasna/configs", LEGACY_CONFIGS_COMPAT_VERSION = "0.2.45", LEGACY_CONFIGS_EXECUTABLE = "configs", PROJECT_KINDS, PROJECT_STATUSES, LINK_STATES, RESOLUTION_SOURCES, safeId, nullableId, producerSlug, producerName, safeOptionalDisplay, isoTimestamp, revisionSchema, hashSchema, absolutePath, commandArg, commandSchema, projectContextBundleSchema, storedManifestProjectContextSchema, storedManifestFileSchema, storedManifestObservationSchema, projectContextCacheSchema, ProjectContextError, ProjectContextHashRace, anchoredFsOps, atomicExchange, atomicExchangeLibraries;
|
|
10302
10304
|
var init_project_context = __esm(() => {
|
|
10303
10305
|
init_zod();
|
|
10304
10306
|
init_redact();
|
|
@@ -10306,6 +10308,16 @@ var init_project_context = __esm(() => {
|
|
|
10306
10308
|
PROJECT_CONTEXT_MAX_INPUT_BYTES = 8 * 1024;
|
|
10307
10309
|
PROJECT_CONTEXT_MAX_RENDERED_BYTES = 4 * 1024;
|
|
10308
10310
|
SESSION_COMPATIBILITY_MANIFEST_MAX_BYTES = 8 * 1024 * 1024;
|
|
10311
|
+
FOREIGN_INPUT_MAX_BYTES = 256 * 1024;
|
|
10312
|
+
SESSION_MANAGED_OUTPUT_MAX_BYTES = SESSION_COMPATIBILITY_MANIFEST_MAX_BYTES;
|
|
10313
|
+
SESSION_MANAGED_OUTPUT_PATHS = [
|
|
10314
|
+
".hasna/session-render-manifest.json",
|
|
10315
|
+
".codewith/.hasna/session-render-manifest.json",
|
|
10316
|
+
"CLAUDE.md",
|
|
10317
|
+
"AGENTS.md",
|
|
10318
|
+
".codewith/CODEWITH.md",
|
|
10319
|
+
".codewith/CODEWITH.override.md"
|
|
10320
|
+
];
|
|
10309
10321
|
PROJECT_CONTEXT_LOCK_STALE_MS = 5 * 60 * 1000;
|
|
10310
10322
|
PROJECT_KINDS = [
|
|
10311
10323
|
"open-source",
|
package/dist/index.js
CHANGED
|
@@ -5831,6 +5831,19 @@ var PROJECT_CONTEXT_SNAPSHOT_DIR = ".hasna/project-context-snapshots";
|
|
|
5831
5831
|
var PROJECT_CONTEXT_CACHE_SCHEMA = "hasna.instructions.project-context-cache/v1";
|
|
5832
5832
|
var PROJECT_CONTEXT_MANAGED_COMMENT = "Managed by @hasna/configs project context";
|
|
5833
5833
|
var SESSION_COMPATIBILITY_MANIFEST_MAX_BYTES = 8 * 1024 * 1024;
|
|
5834
|
+
var FOREIGN_INPUT_MAX_BYTES = 256 * 1024;
|
|
5835
|
+
var SESSION_MANAGED_OUTPUT_MAX_BYTES = SESSION_COMPATIBILITY_MANIFEST_MAX_BYTES;
|
|
5836
|
+
var SESSION_MANAGED_OUTPUT_PATHS = [
|
|
5837
|
+
".hasna/session-render-manifest.json",
|
|
5838
|
+
".codewith/.hasna/session-render-manifest.json",
|
|
5839
|
+
"CLAUDE.md",
|
|
5840
|
+
"AGENTS.md",
|
|
5841
|
+
".codewith/CODEWITH.md",
|
|
5842
|
+
".codewith/CODEWITH.override.md"
|
|
5843
|
+
];
|
|
5844
|
+
function managedObservationMaxBytes(relativePath) {
|
|
5845
|
+
return SESSION_MANAGED_OUTPUT_PATHS.includes(relativePath) ? SESSION_MANAGED_OUTPUT_MAX_BYTES : FOREIGN_INPUT_MAX_BYTES;
|
|
5846
|
+
}
|
|
5834
5847
|
var PROJECT_CONTEXT_LOCK_STALE_MS = 5 * 60 * 1000;
|
|
5835
5848
|
var LEGACY_CONFIGS_PACKAGE = "@hasna/configs";
|
|
5836
5849
|
var LEGACY_CONFIGS_COMPAT_VERSION = "0.2.45";
|
|
@@ -6044,7 +6057,7 @@ function planProjectContext(input) {
|
|
|
6044
6057
|
const inlineMarkerOverhead = nativeImports ? 0 : Buffer.byteLength(buildManagedBlock(bundle, "", `
|
|
6045
6058
|
`), "utf8");
|
|
6046
6059
|
const generated = buildCanonicalFragment(bundle, status, ageSeconds, PROJECT_CONTEXT_MAX_RENDERED_BYTES - Math.max(320, inlineMarkerOverhead), PROJECT_CONTEXT_MAX_APPROX_TOKENS - Math.max(80, Math.ceil(inlineMarkerOverhead / 4)));
|
|
6047
|
-
const previousTargetContent = existsSync3(paths.target) ? readUtf8RegularFile(paths.target, workspaceRoot) : null;
|
|
6060
|
+
const previousTargetContent = existsSync3(paths.target) ? readUtf8RegularFile(paths.target, workspaceRoot, managedObservationMaxBytes(relativePosix(workspaceRoot, paths.target))) : null;
|
|
6048
6061
|
const markerParse = parseManagedBlock(previousTargetContent ?? "", input.force === true);
|
|
6049
6062
|
if (markerParse.block && markerParse.block.id !== bundle.project.id) {
|
|
6050
6063
|
throw new ProjectContextError("MANAGED_BLOCK_CONFLICT", "managed block belongs to a different project");
|
|
@@ -6127,7 +6140,7 @@ function composeProjectContextSessionRender(input) {
|
|
|
6127
6140
|
if (!existsSync3(paths.target)) {
|
|
6128
6141
|
throw new ProjectContextError("MANAGED_BLOCK_CONFLICT", "project-context provider target is missing while durable context is active");
|
|
6129
6142
|
}
|
|
6130
|
-
const currentTarget = readUtf8RegularFile(paths.target, workspaceRoot);
|
|
6143
|
+
const currentTarget = readUtf8RegularFile(paths.target, workspaceRoot, managedObservationMaxBytes(relativePosix(workspaceRoot, paths.target)));
|
|
6131
6144
|
const currentMarkers = parseManagedBlock(currentTarget, false);
|
|
6132
6145
|
if (!currentMarkers.block) {
|
|
6133
6146
|
throw new ProjectContextError("MANAGED_BLOCK_CONFLICT", "project-context provider target lost its managed block");
|
|
@@ -7521,7 +7534,7 @@ function anchoredFileObservation(directory, name) {
|
|
|
7521
7534
|
if (!stat.isFile())
|
|
7522
7535
|
throw new ProjectContextHashRace("managed output is not a regular file");
|
|
7523
7536
|
const relativePath = relativePosix(directory.workspaceRoot, join3(directory.path, name));
|
|
7524
|
-
const maxBytes = directory.maxObservedBytes === undefined ? relativePath
|
|
7537
|
+
const maxBytes = directory.maxObservedBytes === undefined ? managedObservationMaxBytes(relativePath) : directory.maxObservedBytes;
|
|
7525
7538
|
if (maxBytes !== null && stat.size > maxBytes) {
|
|
7526
7539
|
throw new ProjectContextHashRace(`managed output exceeds the safe read limit: ${relativePath}`);
|
|
7527
7540
|
}
|
|
@@ -8170,7 +8183,7 @@ function assertNoSymlinkAncestors(path) {
|
|
|
8170
8183
|
throw new ProjectContextError("PROJECT_CONTEXT_SYMLINK_REJECTED", `workspace ancestor is a symlink: ${current}`);
|
|
8171
8184
|
}
|
|
8172
8185
|
}
|
|
8173
|
-
function readUtf8RegularFile(path, workspaceRoot, maxBytes =
|
|
8186
|
+
function readUtf8RegularFile(path, workspaceRoot, maxBytes = FOREIGN_INPUT_MAX_BYTES) {
|
|
8174
8187
|
assertNoSymlinkSegments(workspaceRoot, path);
|
|
8175
8188
|
const stat = lstatSync(path);
|
|
8176
8189
|
if (!stat.isFile())
|
|
@@ -8183,8 +8196,7 @@ function currentFileHash(path, workspaceRoot) {
|
|
|
8183
8196
|
if (!existsSync3(path))
|
|
8184
8197
|
return null;
|
|
8185
8198
|
const relativePath = relativePosix(workspaceRoot, path);
|
|
8186
|
-
|
|
8187
|
-
return sha2562(readUtf8RegularFile(path, workspaceRoot, maxBytes));
|
|
8199
|
+
return sha2562(readUtf8RegularFile(path, workspaceRoot, managedObservationMaxBytes(relativePath)));
|
|
8188
8200
|
}
|
|
8189
8201
|
function hashesStillMatch(expected, workspaceRoot) {
|
|
8190
8202
|
for (const [path, hash] of expected) {
|
|
@@ -13,6 +13,10 @@ export declare const PROJECT_CONTEXT_LOCK_PATH = ".hasna/project-context.lock";
|
|
|
13
13
|
export declare const PROJECT_CONTEXT_SNAPSHOT_DIR = ".hasna/project-context-snapshots";
|
|
14
14
|
export declare const PROJECT_CONTEXT_CACHE_SCHEMA: "hasna.instructions.project-context-cache/v1";
|
|
15
15
|
export declare const PROJECT_CONTEXT_MANAGED_COMMENT = "Managed by @hasna/configs project context";
|
|
16
|
+
export declare const FOREIGN_INPUT_MAX_BYTES: number;
|
|
17
|
+
export declare const SESSION_MANAGED_OUTPUT_MAX_BYTES: number;
|
|
18
|
+
export declare const SESSION_MANAGED_OUTPUT_PATHS: string[];
|
|
19
|
+
export declare function managedObservationMaxBytes(relativePath: string): number;
|
|
16
20
|
export declare const LEGACY_CONFIGS_PACKAGE: "@hasna/configs";
|
|
17
21
|
export declare const LEGACY_CONFIGS_COMPAT_VERSION: "0.2.45";
|
|
18
22
|
export declare const LEGACY_CONFIGS_EXECUTABLE: "configs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-context.d.ts","sourceRoot":"","sources":["../../src/lib/project-context.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG1H,eAAO,MAAM,sBAAsB,EAAG,0CAAmD,CAAC;AAC1F,eAAO,MAAM,+BAA+B,QAAW,CAAC;AACxD,eAAO,MAAM,kCAAkC,QAAW,CAAC;AAC3D,eAAO,MAAM,iCAAiC,OAAQ,CAAC;AACvD,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,6BAA6B,2CAA2C,CAAC;AACtF,eAAO,MAAM,6BAA6B,yCAAyC,CAAC;AACpF,eAAO,MAAM,0BAA0B,sCAAsC,CAAC;AAC9E,eAAO,MAAM,yBAAyB,gCAAgC,CAAC;AACvE,eAAO,MAAM,4BAA4B,qCAAqC,CAAC;AAC/E,eAAO,MAAM,4BAA4B,EAAG,6CAAsD,CAAC;AACnG,eAAO,MAAM,+BAA+B,8CAA8C,CAAC;
|
|
1
|
+
{"version":3,"file":"project-context.d.ts","sourceRoot":"","sources":["../../src/lib/project-context.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/index.js
CHANGED
|
@@ -5729,7 +5729,7 @@ function isSafeSingleLine(value) {
|
|
|
5729
5729
|
function isSafeCommandArgument(value) {
|
|
5730
5730
|
return /^[A-Za-z0-9_./:@+=,-]+$/.test(value) && !value.includes("://") && !value.startsWith("-") || /^--[a-z][a-z0-9-]*$/.test(value);
|
|
5731
5731
|
}
|
|
5732
|
-
var PROJECT_CONTEXT_SCHEMA = "hasna.projects.project_context_bundle.v1", PROJECT_CONTEXT_MAX_INPUT_BYTES, PROJECT_CONTEXT_MAX_RENDERED_BYTES, PROJECT_CONTEXT_MAX_COMMANDS = 6, PROJECT_CONTEXT_FRAGMENT_PATH = ".hasna/instructions/project-context.md", PROJECT_CONTEXT_CACHE_SCHEMA = "hasna.instructions.project-context-cache/v1", SESSION_COMPATIBILITY_MANIFEST_MAX_BYTES, PROJECT_CONTEXT_LOCK_STALE_MS, PROJECT_KINDS, PROJECT_STATUSES, LINK_STATES, RESOLUTION_SOURCES, safeId, nullableId, producerSlug, producerName, safeOptionalDisplay, isoTimestamp, revisionSchema, hashSchema, absolutePath, commandArg, commandSchema, projectContextBundleSchema, storedManifestProjectContextSchema, storedManifestFileSchema, storedManifestObservationSchema, projectContextCacheSchema;
|
|
5732
|
+
var PROJECT_CONTEXT_SCHEMA = "hasna.projects.project_context_bundle.v1", PROJECT_CONTEXT_MAX_INPUT_BYTES, PROJECT_CONTEXT_MAX_RENDERED_BYTES, PROJECT_CONTEXT_MAX_COMMANDS = 6, PROJECT_CONTEXT_FRAGMENT_PATH = ".hasna/instructions/project-context.md", PROJECT_CONTEXT_CACHE_SCHEMA = "hasna.instructions.project-context-cache/v1", SESSION_COMPATIBILITY_MANIFEST_MAX_BYTES, FOREIGN_INPUT_MAX_BYTES, PROJECT_CONTEXT_LOCK_STALE_MS, PROJECT_KINDS, PROJECT_STATUSES, LINK_STATES, RESOLUTION_SOURCES, safeId, nullableId, producerSlug, producerName, safeOptionalDisplay, isoTimestamp, revisionSchema, hashSchema, absolutePath, commandArg, commandSchema, projectContextBundleSchema, storedManifestProjectContextSchema, storedManifestFileSchema, storedManifestObservationSchema, projectContextCacheSchema;
|
|
5733
5733
|
var init_project_context = __esm(() => {
|
|
5734
5734
|
init_zod();
|
|
5735
5735
|
init_redact();
|
|
@@ -5737,6 +5737,7 @@ var init_project_context = __esm(() => {
|
|
|
5737
5737
|
PROJECT_CONTEXT_MAX_INPUT_BYTES = 8 * 1024;
|
|
5738
5738
|
PROJECT_CONTEXT_MAX_RENDERED_BYTES = 4 * 1024;
|
|
5739
5739
|
SESSION_COMPATIBILITY_MANIFEST_MAX_BYTES = 8 * 1024 * 1024;
|
|
5740
|
+
FOREIGN_INPUT_MAX_BYTES = 256 * 1024;
|
|
5740
5741
|
PROJECT_CONTEXT_LOCK_STALE_MS = 5 * 60 * 1000;
|
|
5741
5742
|
PROJECT_KINDS = [
|
|
5742
5743
|
"open-source",
|
|
@@ -7236,7 +7237,7 @@ var init_sync_dir = __esm(() => {
|
|
|
7236
7237
|
var require_package = __commonJS((exports, module) => {
|
|
7237
7238
|
module.exports = {
|
|
7238
7239
|
name: "@hasna/instructions",
|
|
7239
|
-
version: "0.4.
|
|
7240
|
+
version: "0.4.23",
|
|
7240
7241
|
description: "AI coding agent instruction & configuration manager \u2014 store, version, apply, and share all your AI coding configs. CLI + MCP + HTTP API (instructions-serve) + generated SDK + Dashboard.",
|
|
7241
7242
|
type: "module",
|
|
7242
7243
|
main: "dist/index.js",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hasna/instructions",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.23",
|
|
4
4
|
"description": "AI coding agent instruction & configuration manager \u2014 store, version, apply, and share all your AI coding configs. CLI + MCP + HTTP API (instructions-serve) + generated SDK + Dashboard.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|