@hasna/todos 0.15.32 → 0.15.34
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/cloud-router.d.ts +32 -46
- package/dist/cli/cloud-router.d.ts.map +1 -1
- package/dist/cli/index.js +124 -101
- package/dist/cli/stage-a.d.ts +3 -1
- package/dist/cli/stage-a.d.ts.map +1 -1
- package/dist/contracts.js +32 -26
- package/dist/index.js +92 -87
- package/dist/lib/assignee-validation.d.ts.map +1 -1
- package/dist/mcp/index.js +93 -87
- package/dist/mcp.js +2 -4
- package/dist/project-registration/authority.d.ts.map +1 -1
- package/dist/project-registration.js +52 -30
- package/dist/registry.js +32 -26
- package/dist/release-provenance.json +5 -5
- package/dist/server/index.js +1311 -7260
- package/dist/server/v1.d.ts.map +1 -1
- package/dist/storage/config.d.ts +24 -4
- package/dist/storage/config.d.ts.map +1 -1
- package/dist/storage/hybrid.d.ts +5 -3
- package/dist/storage/hybrid.d.ts.map +1 -1
- package/dist/storage.js +31 -23
- package/dist/task-manifest.js +4 -4
- package/dist/testing.d.ts +16 -7
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +10 -6
- package/package.json +2 -4
package/dist/registry.js
CHANGED
|
@@ -4177,6 +4177,7 @@ __export(exports_config, {
|
|
|
4177
4177
|
TODOS_STORAGE_FALLBACK_ENV: () => TODOS_STORAGE_FALLBACK_ENV,
|
|
4178
4178
|
TODOS_STORAGE_ENV: () => TODOS_STORAGE_ENV,
|
|
4179
4179
|
STORAGE_TABLES: () => STORAGE_TABLES,
|
|
4180
|
+
REMOVED_STORAGE_MODE_ENV_KEYS: () => REMOVED_STORAGE_MODE_ENV_KEYS,
|
|
4180
4181
|
CANONICAL_TODOS_RDS_RUNTIME_PATH_ENV: () => CANONICAL_TODOS_RDS_RUNTIME_PATH_ENV,
|
|
4181
4182
|
CANONICAL_TODOS_RDS_DATABASE: () => CANONICAL_TODOS_RDS_DATABASE,
|
|
4182
4183
|
CANONICAL_TODOS_RDS_CLUSTER_ENV: () => CANONICAL_TODOS_RDS_CLUSTER_ENV
|
|
@@ -4238,25 +4239,36 @@ function assertTodosRemoteStorageConfig(config) {
|
|
|
4238
4239
|
if (!isTodosPostgresBackend(config))
|
|
4239
4240
|
return;
|
|
4240
4241
|
if (!config.database?.url) {
|
|
4241
|
-
throw new Error(`${TODOS_STORAGE_ENV.databaseUrl} is required when
|
|
4242
|
+
throw new Error(`${TODOS_STORAGE_ENV.databaseUrl} is required when the postgresql backend is selected`);
|
|
4242
4243
|
}
|
|
4243
4244
|
}
|
|
4244
4245
|
function parseStorageBackend(value) {
|
|
4245
4246
|
const normalized = clean(value)?.toLowerCase();
|
|
4246
4247
|
if (!normalized)
|
|
4247
4248
|
return "sqlite";
|
|
4248
|
-
if (normalized === "sqlite"
|
|
4249
|
-
return
|
|
4250
|
-
|
|
4251
|
-
|
|
4252
|
-
|
|
4253
|
-
|
|
4249
|
+
if (normalized === "sqlite")
|
|
4250
|
+
return "sqlite";
|
|
4251
|
+
if (normalized === "postgres" || normalized === "postgresql")
|
|
4252
|
+
return "postgres";
|
|
4253
|
+
if (["local", "remote", "cloud", "hybrid", "self_hosted"].includes(normalized)) {
|
|
4254
|
+
throw new Error(`${TODOS_STORAGE_ENV.databaseUrl} selects the backend. Deployment modes no longer exist: ` + `delete the storage-mode variable and set ${TODOS_STORAGE_ENV.databaseUrl} to select the ` + `postgresql backend, or leave it unset for sqlite.`);
|
|
4255
|
+
}
|
|
4256
|
+
throw new Error(`Storage backend must be sqlite or postgres`);
|
|
4254
4257
|
}
|
|
4255
4258
|
function parseStorageMode(value) {
|
|
4256
4259
|
return parseStorageBackend(value);
|
|
4257
4260
|
}
|
|
4258
4261
|
function getTodosStorageBackend(env = process.env) {
|
|
4259
|
-
|
|
4262
|
+
for (const key of REMOVED_STORAGE_MODE_ENV_KEYS) {
|
|
4263
|
+
if (Object.hasOwn(env, key) && env[key] !== undefined) {
|
|
4264
|
+
throw new Error(`${key} was removed. Deployment modes no longer exist: delete the storage-mode variable. ` + `Set ${TODOS_STORAGE_ENV.databaseUrl} to select the postgresql backend, ` + `or leave it unset for sqlite.`);
|
|
4265
|
+
}
|
|
4266
|
+
}
|
|
4267
|
+
if (!getTodosStorageDatabaseUrl(env))
|
|
4268
|
+
return "sqlite";
|
|
4269
|
+
if (isTodosShadowEnabled(env))
|
|
4270
|
+
return "sqlite";
|
|
4271
|
+
return "postgres";
|
|
4260
4272
|
}
|
|
4261
4273
|
function getTodosStorageMode(env = process.env) {
|
|
4262
4274
|
return getTodosStorageBackend(env);
|
|
@@ -4330,7 +4342,7 @@ function parsePositiveInteger(value, fallback) {
|
|
|
4330
4342
|
}
|
|
4331
4343
|
return parsed;
|
|
4332
4344
|
}
|
|
4333
|
-
var TODOS_STORAGE_TABLES, STORAGE_TABLES, TODOS_STORAGE_ENV, TODOS_STORAGE_FALLBACK_ENV, CANONICAL_TODOS_RDS_CLUSTER_ENV = "HASNA_TODOS_RDS_CLUSTER", CANONICAL_TODOS_RDS_RUNTIME_PATH_ENV = "HASNA_TODOS_RDS_RUNTIME_PATH", CANONICAL_TODOS_RDS_DATABASE = "todos"
|
|
4345
|
+
var TODOS_STORAGE_TABLES, STORAGE_TABLES, TODOS_STORAGE_ENV, TODOS_STORAGE_FALLBACK_ENV, REMOVED_STORAGE_MODE_ENV_KEYS, CANONICAL_TODOS_RDS_CLUSTER_ENV = "HASNA_TODOS_RDS_CLUSTER", CANONICAL_TODOS_RDS_RUNTIME_PATH_ENV = "HASNA_TODOS_RDS_RUNTIME_PATH", CANONICAL_TODOS_RDS_DATABASE = "todos";
|
|
4334
4346
|
var init_config = __esm(() => {
|
|
4335
4347
|
TODOS_STORAGE_TABLES = [
|
|
4336
4348
|
"todos_sync_records",
|
|
@@ -4338,7 +4350,6 @@ var init_config = __esm(() => {
|
|
|
4338
4350
|
];
|
|
4339
4351
|
STORAGE_TABLES = TODOS_STORAGE_TABLES;
|
|
4340
4352
|
TODOS_STORAGE_ENV = {
|
|
4341
|
-
mode: "HASNA_TODOS_STORAGE_MODE",
|
|
4342
4353
|
shadow: "HASNA_TODOS_SHADOW",
|
|
4343
4354
|
databaseUrl: "HASNA_TODOS_DATABASE_URL",
|
|
4344
4355
|
databaseSsl: "HASNA_TODOS_DATABASE_SSL",
|
|
@@ -4355,7 +4366,6 @@ var init_config = __esm(() => {
|
|
|
4355
4366
|
syncDryRun: "HASNA_TODOS_SYNC_DRY_RUN"
|
|
4356
4367
|
};
|
|
4357
4368
|
TODOS_STORAGE_FALLBACK_ENV = {
|
|
4358
|
-
mode: "TODOS_STORAGE_MODE",
|
|
4359
4369
|
shadow: "TODOS_SHADOW",
|
|
4360
4370
|
databaseUrl: "TODOS_DATABASE_URL",
|
|
4361
4371
|
databaseSsl: "TODOS_DATABASE_SSL",
|
|
@@ -4371,14 +4381,12 @@ var init_config = __esm(() => {
|
|
|
4371
4381
|
syncBatchSize: "TODOS_SYNC_BATCH_SIZE",
|
|
4372
4382
|
syncDryRun: "TODOS_SYNC_DRY_RUN"
|
|
4373
4383
|
};
|
|
4374
|
-
|
|
4375
|
-
|
|
4376
|
-
|
|
4377
|
-
|
|
4378
|
-
|
|
4379
|
-
|
|
4380
|
-
cloud: "postgres"
|
|
4381
|
-
};
|
|
4384
|
+
REMOVED_STORAGE_MODE_ENV_KEYS = [
|
|
4385
|
+
"HASNA_TODOS_STORAGE_MODE",
|
|
4386
|
+
"HASNA_TODOS_MODE",
|
|
4387
|
+
"TODOS_STORAGE_MODE",
|
|
4388
|
+
"TODOS_MODE"
|
|
4389
|
+
];
|
|
4382
4390
|
});
|
|
4383
4391
|
|
|
4384
4392
|
// src/storage/shadow-outbox-schema.ts
|
|
@@ -7227,8 +7235,8 @@ var init_secret_redaction = __esm(() => {
|
|
|
7227
7235
|
SECRET_REDACTION_SCHEMA = ["todos", "secret_redaction", "v1"].join(".");
|
|
7228
7236
|
DEFAULT_PATTERNS = [
|
|
7229
7237
|
{ name: "openai_sk", pattern: /\bsk-[a-zA-Z0-9]{10,}\b/g },
|
|
7230
|
-
{ name: "github_pat", pattern: /\
|
|
7231
|
-
{ name: "github_oauth", pattern: /\
|
|
7238
|
+
{ name: "github_pat", pattern: /\bgh[p]_[a-zA-Z0-9]{20,}\b/g },
|
|
7239
|
+
{ name: "github_oauth", pattern: /\bgh[o]_[a-zA-Z0-9]{20,}\b/g },
|
|
7232
7240
|
{ name: "aws_access_key", pattern: /\bAKIA[0-9A-Z]{16}\b/g },
|
|
7233
7241
|
{ name: "bearer_token", pattern: /\bBearer\s+[a-zA-Z0-9\-._~+/]+=*\b/gi },
|
|
7234
7242
|
{ name: "jwt", pattern: /\beyJ[a-zA-Z0-9_-]+\.eyJ[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+\b/g },
|
|
@@ -7240,7 +7248,7 @@ var init_secret_redaction = __esm(() => {
|
|
|
7240
7248
|
/example\.com/i,
|
|
7241
7249
|
/your-api-key-here/i,
|
|
7242
7250
|
/sk-test/i,
|
|
7243
|
-
/
|
|
7251
|
+
/gh[p]_xxx/i
|
|
7244
7252
|
];
|
|
7245
7253
|
customRedactors = [];
|
|
7246
7254
|
});
|
|
@@ -12720,7 +12728,7 @@ var init_tasks = __esm(() => {
|
|
|
12720
12728
|
// package.json
|
|
12721
12729
|
var package_default = {
|
|
12722
12730
|
name: "@hasna/todos",
|
|
12723
|
-
version: "0.15.
|
|
12731
|
+
version: "0.15.34",
|
|
12724
12732
|
description: "Universal task management for AI coding agents - CLI + MCP server + interactive TUI",
|
|
12725
12733
|
type: "module",
|
|
12726
12734
|
main: "dist/index.js",
|
|
@@ -12794,9 +12802,7 @@ var package_default = {
|
|
|
12794
12802
|
"verify:release": "bun run scripts/verify-public-release.ts --mode=review",
|
|
12795
12803
|
"verify:release-review": "bun run scripts/verify-npm-release-agent-review.ts",
|
|
12796
12804
|
"verify:attested-container-candidate": "bun run scripts/attested-container-candidate.ts verify",
|
|
12797
|
-
"test:attested-container-candidate": "bun test scripts/attested-container-candidate.test.ts
|
|
12798
|
-
"emit:iapp-deployment-compatibility-vector": "bun run scripts/attested-container-compatibility-vector.ts emit",
|
|
12799
|
-
"verify:iapp-deployment-compatibility-vector": "bun run scripts/attested-container-compatibility-vector.ts verify",
|
|
12805
|
+
"test:attested-container-candidate": "bun test scripts/attested-container-candidate.test.ts",
|
|
12800
12806
|
"issue:release-review": "bun run scripts/issue-npm-release-agent-review.ts",
|
|
12801
12807
|
prepublishOnly: "bun run scripts/verify-public-release.ts --mode=publish",
|
|
12802
12808
|
postinstall: "mkdir -p $HOME/.hasna/todos $HOME/.hasna/todos/training 2>/dev/null || true"
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"packageName": "@hasna/todos",
|
|
3
|
-
"packageVersion": "0.15.
|
|
3
|
+
"packageVersion": "0.15.34",
|
|
4
4
|
"repository": "https://github.com/hasna/todos.git",
|
|
5
|
-
"gitCommit": "
|
|
6
|
-
"gitTree": "
|
|
7
|
-
"sourceTreeSha256": "
|
|
8
|
-
"generatedAt": "2026-08-
|
|
5
|
+
"gitCommit": "1e6a7cf5727c4e29cc48d4fabad68602a1bdb183",
|
|
6
|
+
"gitTree": "2a0facd155af45e5d46ced7ae193643b223ff4e5",
|
|
7
|
+
"sourceTreeSha256": "e735d06856448b5f3f5903fa141b5201c768077e6531fb7761ab65b5f54a1b8a",
|
|
8
|
+
"generatedAt": "2026-08-15T18:18:40.000Z"
|
|
9
9
|
}
|