@hasna/todos 0.11.75 → 0.11.82

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.
Files changed (65) hide show
  1. package/README.md +8 -0
  2. package/dist/cli/cloud-router.d.ts +90 -0
  3. package/dist/cli/cloud-router.d.ts.map +1 -0
  4. package/dist/cli/commands/agent-commands.d.ts.map +1 -1
  5. package/dist/cli/commands/plan-template-commands.d.ts.map +1 -1
  6. package/dist/cli/commands/project-commands.d.ts.map +1 -1
  7. package/dist/cli/commands/query-commands.d.ts.map +1 -1
  8. package/dist/cli/commands/storage-commands.d.ts.map +1 -1
  9. package/dist/cli/commands/task-commands.d.ts.map +1 -1
  10. package/dist/cli/helpers.d.ts +22 -0
  11. package/dist/cli/helpers.d.ts.map +1 -1
  12. package/dist/cli/index.js +72556 -62360
  13. package/dist/contracts.js +314 -14
  14. package/dist/db/database.d.ts.map +1 -1
  15. package/dist/index.js +1160 -236
  16. package/dist/lib/shadow-status.d.ts +38 -0
  17. package/dist/lib/shadow-status.d.ts.map +1 -0
  18. package/dist/mcp/index.js +10378 -341
  19. package/dist/mcp/tools/agents.d.ts.map +1 -1
  20. package/dist/mcp/tools/task-adv-tools.d.ts.map +1 -1
  21. package/dist/mcp/tools/task-auto-tools.d.ts.map +1 -1
  22. package/dist/mcp/tools/task-crud.d.ts.map +1 -1
  23. package/dist/mcp/tools/task-project-tools.d.ts.map +1 -1
  24. package/dist/mcp/tools/task-workflow-tools.d.ts.map +1 -1
  25. package/dist/registry.js +314 -14
  26. package/dist/release-provenance.json +3 -3
  27. package/dist/sdk/index.d.ts +2 -0
  28. package/dist/sdk/index.d.ts.map +1 -1
  29. package/dist/sdk/index.js +135 -0
  30. package/dist/sdk/v1.generated.d.ts +124 -0
  31. package/dist/sdk/v1.generated.d.ts.map +1 -0
  32. package/dist/server/cloud.d.ts +50 -0
  33. package/dist/server/cloud.d.ts.map +1 -0
  34. package/dist/server/index.js +12073 -2013
  35. package/dist/server/openapi.d.ts +628 -0
  36. package/dist/server/openapi.d.ts.map +1 -0
  37. package/dist/server/serve.d.ts.map +1 -1
  38. package/dist/server/v1.d.ts +19 -0
  39. package/dist/server/v1.d.ts.map +1 -0
  40. package/dist/storage/cloud-client.d.ts +30 -0
  41. package/dist/storage/cloud-client.d.ts.map +1 -0
  42. package/dist/storage/config.d.ts +12 -0
  43. package/dist/storage/config.d.ts.map +1 -1
  44. package/dist/storage/factory.d.ts +2 -0
  45. package/dist/storage/factory.d.ts.map +1 -1
  46. package/dist/storage/index.d.ts +8 -1
  47. package/dist/storage/index.d.ts.map +1 -1
  48. package/dist/storage/interfaces.d.ts +1 -0
  49. package/dist/storage/interfaces.d.ts.map +1 -1
  50. package/dist/storage/local-sqlite.d.ts.map +1 -1
  51. package/dist/storage/postgres-adapter.d.ts.map +1 -1
  52. package/dist/storage/postgres-sync.d.ts.map +1 -1
  53. package/dist/storage/shadow-outbox-schema.d.ts +21 -0
  54. package/dist/storage/shadow-outbox-schema.d.ts.map +1 -0
  55. package/dist/storage/shadow-outbox.d.ts +125 -0
  56. package/dist/storage/shadow-outbox.d.ts.map +1 -0
  57. package/dist/storage/shadow-runtime.d.ts +29 -0
  58. package/dist/storage/shadow-runtime.d.ts.map +1 -0
  59. package/dist/storage/shadow.d.ts +118 -0
  60. package/dist/storage/shadow.d.ts.map +1 -0
  61. package/dist/storage.d.ts +2 -1
  62. package/dist/storage.d.ts.map +1 -1
  63. package/dist/storage.js +1159 -220
  64. package/package.json +6 -2
  65. package/vendor/hasna-contracts-0.5.1.tgz +0 -0
@@ -0,0 +1,124 @@
1
+ export interface Task {
2
+ "id"?: string;
3
+ "title"?: string;
4
+ "description"?: string;
5
+ "status"?: string;
6
+ "priority"?: string;
7
+ "project_id"?: string | null;
8
+ "assigned_to"?: string | null;
9
+ "agent_id"?: string | null;
10
+ "tags"?: Array<string>;
11
+ "version"?: number;
12
+ "created_at"?: string;
13
+ "updated_at"?: string;
14
+ }
15
+ export interface Project {
16
+ "id"?: string;
17
+ "name"?: string;
18
+ "path"?: string;
19
+ "description"?: string | null;
20
+ "created_at"?: string;
21
+ "updated_at"?: string;
22
+ }
23
+ export interface CreateTaskInput {
24
+ "title": string;
25
+ "description"?: string;
26
+ "status"?: string;
27
+ "priority"?: string;
28
+ "project_id"?: string;
29
+ "assigned_to"?: string;
30
+ "agent_id"?: string;
31
+ "tags"?: Array<string>;
32
+ }
33
+ export interface UpdateTaskInput {
34
+ "title"?: string;
35
+ "description"?: string;
36
+ "status"?: string;
37
+ "priority"?: string;
38
+ "assigned_to"?: string;
39
+ "version"?: number;
40
+ }
41
+ export interface CreateProjectInput {
42
+ "name": string;
43
+ "path": string;
44
+ "description"?: string;
45
+ "task_prefix"?: string;
46
+ }
47
+ export interface TodosV1ClientOptions {
48
+ /** Base URL, e.g. process.env.APP_API_URL. */
49
+ baseUrl: string;
50
+ /** API key, e.g. process.env.APP_API_KEY. Sent as the 'x-api-key' header. */
51
+ apiKey?: string;
52
+ /** Custom fetch (defaults to global fetch). */
53
+ fetch?: typeof fetch;
54
+ /** Extra headers merged into every request. */
55
+ headers?: Record<string, string>;
56
+ }
57
+ export declare class ApiError extends Error {
58
+ readonly status: number;
59
+ readonly body: unknown;
60
+ constructor(status: number, message: string, body: unknown);
61
+ }
62
+ export declare class TodosV1Client {
63
+ private readonly baseUrl;
64
+ private readonly apiKey;
65
+ private readonly fetchImpl;
66
+ private readonly baseHeaders;
67
+ constructor(options: TodosV1ClientOptions);
68
+ private request;
69
+ /** List projects */
70
+ listProjects(init?: RequestInit): Promise<{
71
+ "projects"?: Array<Project>;
72
+ "count"?: number;
73
+ }>;
74
+ /** Create a project */
75
+ createProject(body: CreateProjectInput, init?: RequestInit): Promise<{
76
+ "project"?: Project;
77
+ }>;
78
+ /** Get a project by id */
79
+ getProject(id: string, init?: RequestInit): Promise<{
80
+ "project"?: Project;
81
+ }>;
82
+ /** Aggregate counts */
83
+ getStats(init?: RequestInit): Promise<{
84
+ "tasks"?: number;
85
+ "projects"?: number;
86
+ }>;
87
+ /** List tasks */
88
+ listTasks(query?: {
89
+ "status"?: string;
90
+ "project_id"?: string;
91
+ "assigned_to"?: string;
92
+ "agent_id"?: string;
93
+ "limit"?: number;
94
+ }, init?: RequestInit): Promise<{
95
+ "tasks"?: Array<Task>;
96
+ "count"?: number;
97
+ }>;
98
+ /** Create a task */
99
+ createTask(body: CreateTaskInput, init?: RequestInit): Promise<{
100
+ "task"?: Task;
101
+ }>;
102
+ /** Get a task by id */
103
+ getTask(id: string, init?: RequestInit): Promise<{
104
+ "task"?: Task;
105
+ }>;
106
+ /** Delete a task */
107
+ deleteTask(id: string, init?: RequestInit): Promise<{
108
+ "deleted"?: boolean;
109
+ "id"?: string;
110
+ }>;
111
+ /** Update a task */
112
+ updateTask(id: string, body: UpdateTaskInput, init?: RequestInit): Promise<{
113
+ "task"?: Task;
114
+ }>;
115
+ /** Complete a task */
116
+ completeTask(id: string, init?: RequestInit): Promise<{
117
+ "task"?: Task;
118
+ }>;
119
+ /** Start a task */
120
+ startTask(id: string, init?: RequestInit): Promise<{
121
+ "task"?: Task;
122
+ }>;
123
+ }
124
+ //# sourceMappingURL=v1.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v1.generated.d.ts","sourceRoot":"","sources":["../../src/sdk/v1.generated.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Cloud (A1 pure-remote) service wiring for `todos-serve`.
3
+ *
4
+ * This module powers the versioned `/v1` API and its API-key auth. Per Amendment
5
+ * A1 the serve process reads and writes the shared RDS Postgres DIRECTLY through
6
+ * the repo-native Postgres storage adapter — there is NO local sync/cache in the
7
+ * service. Everything here is lazy: nothing touches Postgres or crypto until the
8
+ * first `/v1` (or `/ready`) request, so the local-first CLI/dashboard paths keep
9
+ * ZERO cloud dependencies.
10
+ */
11
+ import { type ApiKeyVerifier } from "@hasna/contracts/auth";
12
+ import { ApiKeyStore } from "@hasna/contracts/auth";
13
+ import type { TodosStorageAdapter } from "../storage/interfaces.js";
14
+ export declare const TODOS_APP_SLUG = "todos";
15
+ /** Resolve the remote DATABASE_URL from the supported env vars (in priority order). */
16
+ export declare function resolveCloudDatabaseUrl(env?: NodeJS.ProcessEnv): string | undefined;
17
+ /** Resolve the HMAC signing secret used to verify API keys. */
18
+ export declare function resolveSigningSecret(env?: NodeJS.ProcessEnv): string | undefined;
19
+ /** True when this process is configured to serve the cloud `/v1` API. */
20
+ export declare function isCloudModeEnabled(env?: NodeJS.ProcessEnv): boolean;
21
+ /** The pure-remote Postgres storage adapter backing every `/v1` handler. */
22
+ export declare function getCloudStorageAdapter(): TodosStorageAdapter;
23
+ export declare function getApiKeyStore(): ApiKeyStore;
24
+ /**
25
+ * The framework-agnostic API-key verifier for `/v1`. Tokens are stateless,
26
+ * HMAC-signed by the contracts issuer; revocation is checked against the RDS
27
+ * `api_keys` table. Fails closed when no signing secret is configured.
28
+ */
29
+ export declare function getCloudVerifier(): ApiKeyVerifier;
30
+ /**
31
+ * Ensure the remote schema exists: the JSONB sync tables the Postgres adapter
32
+ * reads/writes, plus the api-keys table. Idempotent, run once per process and by
33
+ * the migration runner. NEVER drops or rewrites existing tables.
34
+ */
35
+ export declare function ensureCloudSchema(): Promise<void>;
36
+ /**
37
+ * Repair legacy double-encoded payloads. Earlier writes bound `JSON.stringify(value)`
38
+ * to a `$::jsonb` param, which Bun.SQL stores as a jsonb STRING scalar rather than
39
+ * an object — so every server-side `payload->>'field'` filter (and jsonb_set for the
40
+ * short-id counter) silently failed. This converts those rows back to real jsonb
41
+ * objects. Idempotent: only touches rows where `jsonb_typeof(payload) = 'string'`,
42
+ * so it is safe to run repeatedly and a no-op once migrated. Returns the row count
43
+ * that was normalized.
44
+ */
45
+ export declare function normalizeCloudPayloads(): Promise<number>;
46
+ /** Cheap readiness probe: round-trips a trivial query to RDS. */
47
+ export declare function pingCloud(): Promise<boolean>;
48
+ /** Test/shutdown helper. */
49
+ export declare function closeCloud(): Promise<void>;
50
+ //# sourceMappingURL=cloud.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/server/cloud.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAwB,MAAM,uBAAuB,CAAC;AAG1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGpE,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC,uFAAuF;AACvF,wBAAgB,uBAAuB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAOhG;AAED,+DAA+D;AAC/D,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAO7F;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEhF;AAoBD,4EAA4E;AAC5E,wBAAgB,sBAAsB,IAAI,mBAAmB,CAK5D;AAuBD,wBAAgB,cAAc,IAAI,WAAW,CAI5C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,cAAc,CAejD;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAUvD;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC,CAS9D;AAED,iEAAiE;AACjE,wBAAsB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAIlD;AAED,4BAA4B;AAC5B,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAOhD"}