@scuffi/gardener 0.1.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.
Files changed (21) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +17 -0
  3. package/assets/apps/gardener/dist/gardener_runtime/assets/anthropic-messages-CpAYOexF.js +6431 -0
  4. package/assets/apps/gardener/dist/gardener_runtime/assets/deferred-tools-BwNJSp7E.js +31 -0
  5. package/assets/apps/gardener/dist/gardener_runtime/assets/error-body-D8mmocwO.js +6744 -0
  6. package/assets/apps/gardener/dist/gardener_runtime/assets/hash-DAk4mnwB.js +18 -0
  7. package/assets/apps/gardener/dist/gardener_runtime/assets/json-parse-DCA_fvRV.js +1094 -0
  8. package/assets/apps/gardener/dist/gardener_runtime/assets/mimetext.node.es-XQfmuX2L.js +8403 -0
  9. package/assets/apps/gardener/dist/gardener_runtime/assets/openai-completions-Dg9BYhy-.js +907 -0
  10. package/assets/apps/gardener/dist/gardener_runtime/assets/openai-prompt-cache-IAZGhS1U.js +12 -0
  11. package/assets/apps/gardener/dist/gardener_runtime/assets/openai-responses-shared-BptkVdeL.js +560 -0
  12. package/assets/apps/gardener/dist/gardener_runtime/assets/openai-responses-vjbR2NOB.js +240 -0
  13. package/assets/apps/gardener/dist/gardener_runtime/assets/rolldown-runtime-7_rZTKki.js +42 -0
  14. package/assets/apps/gardener/dist/gardener_runtime/assets/simple-options-tFhuCUzS.js +300 -0
  15. package/assets/apps/gardener/dist/gardener_runtime/assets/transform-messages-B41ICucH.js +246 -0
  16. package/assets/apps/gardener/dist/gardener_runtime/index.js +80307 -0
  17. package/assets/apps/gardener/migrations/0001_actions_baseline.sql +116 -0
  18. package/assets/gardener-distribution.json +5 -0
  19. package/dist/cli.js +24719 -0
  20. package/dist/cli.js.map +7 -0
  21. package/package.json +45 -0
@@ -0,0 +1,116 @@
1
+ -- Gardener runtime schema: repository enrollment, task bundles, runs, and audit.
2
+ CREATE TABLE IF NOT EXISTS actions_repository_enrollments (
3
+ repository_id TEXT PRIMARY KEY CHECK (length(repository_id) BETWEEN 1 AND 20 AND substr(repository_id, 1, 1) <> '0' AND repository_id NOT GLOB '*[^0-9]*'),
4
+ owner_id TEXT NOT NULL CHECK (length(owner_id) BETWEEN 1 AND 20 AND substr(owner_id, 1, 1) <> '0' AND owner_id NOT GLOB '*[^0-9]*'),
5
+ owner_login TEXT NOT NULL CHECK (length(owner_login) BETWEEN 1 AND 100),
6
+ repository_name TEXT NOT NULL CHECK (length(repository_name) BETWEEN 1 AND 100),
7
+ visibility TEXT NOT NULL CHECK (visibility IN ('public', 'private', 'internal')),
8
+ plan_job_workflow_ref TEXT NOT NULL CHECK (length(plan_job_workflow_ref) BETWEEN 1 AND 1024),
9
+ effects_job_workflow_ref TEXT CHECK (effects_job_workflow_ref IS NULL OR length(effects_job_workflow_ref) BETWEEN 1 AND 1024),
10
+ oidc_audience TEXT NOT NULL CHECK (length(oidc_audience) BETWEEN 1 AND 512),
11
+ enabled INTEGER NOT NULL DEFAULT 1 CHECK (enabled IN (0, 1)),
12
+ created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
13
+ updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
14
+ UNIQUE(owner_id, owner_login, repository_name)
15
+ ) STRICT;
16
+
17
+ CREATE TABLE IF NOT EXISTS actions_task_runs (
18
+ id TEXT PRIMARY KEY CHECK (length(id) BETWEEN 1 AND 160),
19
+ repository_id TEXT NOT NULL,
20
+ github_run_id TEXT NOT NULL CHECK (length(github_run_id) BETWEEN 1 AND 20 AND substr(github_run_id, 1, 1) <> '0' AND github_run_id NOT GLOB '*[^0-9]*'),
21
+ github_run_attempt INTEGER NOT NULL CHECK (github_run_attempt > 0),
22
+ phase TEXT NOT NULL CHECK (phase IN ('plan', 'effects')),
23
+ bundle_hash TEXT NOT NULL CHECK (length(bundle_hash) = 64),
24
+ request_json TEXT NOT NULL CHECK (json_valid(request_json)),
25
+ status TEXT NOT NULL CHECK (status IN ('admitted', 'running', 'completed', 'failed', 'cancelled')),
26
+ harness_submission_json TEXT CHECK (harness_submission_json IS NULL OR json_valid(harness_submission_json)),
27
+ outcome_json TEXT CHECK (outcome_json IS NULL OR json_valid(outcome_json)),
28
+ effect_receipt_json TEXT CHECK (effect_receipt_json IS NULL OR json_valid(effect_receipt_json)),
29
+ created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
30
+ updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
31
+ UNIQUE(repository_id, github_run_id, github_run_attempt, phase),
32
+ FOREIGN KEY (repository_id) REFERENCES actions_repository_enrollments(repository_id)
33
+ ) STRICT;
34
+
35
+ CREATE TABLE IF NOT EXISTS actions_task_audit (
36
+ sequence INTEGER PRIMARY KEY AUTOINCREMENT,
37
+ run_id TEXT NOT NULL,
38
+ event TEXT NOT NULL CHECK (length(event) BETWEEN 1 AND 100),
39
+ detail_json TEXT NOT NULL DEFAULT '{}' CHECK (json_valid(detail_json)),
40
+ created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
41
+ FOREIGN KEY (run_id) REFERENCES actions_task_runs(id)
42
+ ) STRICT;
43
+
44
+ CREATE TRIGGER IF NOT EXISTS actions_task_audit_no_update
45
+ BEFORE UPDATE ON actions_task_audit
46
+ BEGIN
47
+ SELECT RAISE(ABORT, 'Actions task audit records are immutable');
48
+ END;
49
+
50
+ CREATE TRIGGER IF NOT EXISTS actions_task_audit_no_delete
51
+ BEFORE DELETE ON actions_task_audit
52
+ BEGIN
53
+ SELECT RAISE(ABORT, 'Actions task audit records are immutable');
54
+ END;
55
+
56
+ -- Store immutable compiled task bundles separately from repository enrollment.
57
+ -- Runners select bundles only by SHA-256; the runtime loads canonical bytes from
58
+ -- D1 after authenticating the repository with GitHub OIDC.
59
+ CREATE TABLE IF NOT EXISTS actions_task_bundles (
60
+ bundle_hash TEXT PRIMARY KEY CHECK (length(bundle_hash) = 64 AND bundle_hash NOT GLOB '*[^a-f0-9]*'),
61
+ task_id TEXT NOT NULL CHECK (length(task_id) BETWEEN 1 AND 160),
62
+ bundle_json TEXT NOT NULL CHECK (json_valid(bundle_json)),
63
+ created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
64
+ ) STRICT;
65
+
66
+ CREATE TABLE IF NOT EXISTS actions_repository_tasks (
67
+ repository_id TEXT NOT NULL,
68
+ bundle_hash TEXT NOT NULL,
69
+ task_id TEXT NOT NULL CHECK (length(task_id) BETWEEN 1 AND 160),
70
+ source_path TEXT NOT NULL CHECK (
71
+ length(source_path) BETWEEN 1 AND 1024
72
+ AND substr(source_path, 1, 1) <> '/'
73
+ AND instr(source_path, '\\') = 0
74
+ AND instr('/' || source_path || '/', '/../') = 0
75
+ AND instr('/' || source_path || '/', '/./') = 0
76
+ ),
77
+ enabled INTEGER NOT NULL DEFAULT 1 CHECK (enabled IN (0, 1)),
78
+ created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
79
+ updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
80
+ PRIMARY KEY (repository_id, bundle_hash),
81
+ FOREIGN KEY (repository_id) REFERENCES actions_repository_enrollments(repository_id),
82
+ FOREIGN KEY (bundle_hash) REFERENCES actions_task_bundles(bundle_hash)
83
+ ) STRICT;
84
+
85
+ CREATE INDEX IF NOT EXISTS idx_actions_repository_tasks_enabled
86
+ ON actions_repository_tasks(repository_id, enabled, bundle_hash);
87
+
88
+ CREATE TABLE IF NOT EXISTS actions_control_audit (
89
+ sequence INTEGER PRIMARY KEY AUTOINCREMENT,
90
+ scope TEXT NOT NULL CHECK (scope IN ('repository', 'task')),
91
+ repository_id TEXT NOT NULL,
92
+ task_id TEXT,
93
+ bundle_hash TEXT,
94
+ enabled INTEGER NOT NULL CHECK (enabled IN (0, 1)),
95
+ detail_json TEXT NOT NULL,
96
+ created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
97
+ );
98
+
99
+ CREATE INDEX IF NOT EXISTS idx_actions_control_audit_repository
100
+ ON actions_control_audit(repository_id, sequence DESC);
101
+
102
+ CREATE TRIGGER IF NOT EXISTS actions_repository_enabled_audit
103
+ AFTER UPDATE OF enabled ON actions_repository_enrollments
104
+ WHEN OLD.enabled <> NEW.enabled
105
+ BEGIN
106
+ INSERT INTO actions_control_audit(scope,repository_id,task_id,bundle_hash,enabled,detail_json)
107
+ VALUES ('repository',NEW.repository_id,NULL,NULL,NEW.enabled,'{"source":"database-trigger"}');
108
+ END;
109
+
110
+ CREATE TRIGGER IF NOT EXISTS actions_task_enabled_audit
111
+ AFTER UPDATE OF enabled ON actions_repository_tasks
112
+ WHEN OLD.enabled <> NEW.enabled
113
+ BEGIN
114
+ INSERT INTO actions_control_audit(scope,repository_id,task_id,bundle_hash,enabled,detail_json)
115
+ VALUES ('task',NEW.repository_id,NEW.task_id,NEW.bundle_hash,NEW.enabled,'{"source":"database-trigger"}');
116
+ END;
@@ -0,0 +1,5 @@
1
+ {
2
+ "schemaVersion": "gardener.cli-distribution/v1",
3
+ "package": "@scuffi/gardener",
4
+ "version": "0.1.1"
5
+ }