@noodleseed/one 0.97.0 → 0.98.0
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/node_modules/@noodle-borg/service/dist/feedback-operations/bootstrap.d.ts +7 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/bootstrap.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/bootstrap.js +23 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/bootstrap.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/config.d.ts +12 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/config.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/config.js +47 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/config.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/contracts.d.ts +24 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/contracts.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/contracts.js +2 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/contracts.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/delivery-worker.d.ts +29 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/delivery-worker.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/delivery-worker.js +256 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/delivery-worker.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/linear-client.d.ts +39 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/linear-client.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/linear-client.js +142 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/linear-client.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/reporter-email.d.ts +33 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/reporter-email.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/reporter-email.js +142 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/reporter-email.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/slack-card.d.ts +138 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/slack-card.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/slack-card.js +199 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/slack-card.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/slack-client.d.ts +44 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/slack-client.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/slack-client.js +95 -0
- package/node_modules/@noodle-borg/service/dist/feedback-operations/slack-client.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/main.js +38 -3
- package/node_modules/@noodle-borg/service/dist/main.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/options.d.ts +14 -0
- package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/feedback-operations-dispatch.d.ts +9 -0
- package/node_modules/@noodle-borg/service/dist/routes/feedback-operations-dispatch.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/feedback-operations-dispatch.js +53 -0
- package/node_modules/@noodle-borg/service/dist/routes/feedback-operations-dispatch.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/feedback.d.ts +2 -0
- package/node_modules/@noodle-borg/service/dist/routes/feedback.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/feedback.js +22 -0
- package/node_modules/@noodle-borg/service/dist/routes/feedback.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/linear-feedback-webhook.d.ts +17 -0
- package/node_modules/@noodle-borg/service/dist/routes/linear-feedback-webhook.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/linear-feedback-webhook.js +141 -0
- package/node_modules/@noodle-borg/service/dist/routes/linear-feedback-webhook.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/slack-feedback-actions.d.ts +13 -0
- package/node_modules/@noodle-borg/service/dist/routes/slack-feedback-actions.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/slack-feedback-actions.js +99 -0
- package/node_modules/@noodle-borg/service/dist/routes/slack-feedback-actions.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/serve.js +23 -0
- package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.d.ts +1 -0
- package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.js +2 -0
- package/node_modules/@noodle-borg/service/dist/service-resource-cleanup.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service.js +6 -0
- package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/feedback-operations.d.ts +186 -0
- package/node_modules/@noodle-borg/service/dist/store/feedback-operations.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/feedback-operations.js +483 -0
- package/node_modules/@noodle-borg/service/dist/store/feedback-operations.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-feedback-operations.d.ts +35 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-feedback-operations.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-feedback-operations.js +172 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-feedback-operations.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { InMemoryFeedbackOperationsStore, validateFeedbackOperationsState, } from './feedback-operations.js';
|
|
2
|
+
const LOCK_TIMEOUT_MS = 5_000;
|
|
3
|
+
const STATEMENT_TIMEOUT_MS = 10_000;
|
|
4
|
+
const EMPTY_STATE = {
|
|
5
|
+
records: {},
|
|
6
|
+
linearDeliveries: {},
|
|
7
|
+
startWork: {},
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Low-volume feedback operations are intentionally serialized through one locked JSONB state row.
|
|
11
|
+
* This keeps every provider delivery, first-accept claim, and outbox lease in the same transaction
|
|
12
|
+
* without widening the general control-plane schema. The row can be normalized later without
|
|
13
|
+
* changing the store contract if volume ever justifies it.
|
|
14
|
+
*/
|
|
15
|
+
export class PostgresFeedbackOperationsStore {
|
|
16
|
+
#pool;
|
|
17
|
+
constructor(pool) {
|
|
18
|
+
this.#pool = pool;
|
|
19
|
+
}
|
|
20
|
+
async ensureSchema() {
|
|
21
|
+
const client = await this.#pool.connect();
|
|
22
|
+
let released = false;
|
|
23
|
+
try {
|
|
24
|
+
await client.query('BEGIN');
|
|
25
|
+
await client.query(`SELECT set_config('lock_timeout', $1, true), set_config('statement_timeout', $2, true)`, [`${LOCK_TIMEOUT_MS}ms`, `${STATEMENT_TIMEOUT_MS}ms`]);
|
|
26
|
+
await client.query(`SELECT pg_advisory_xact_lock(hashtext('noodle.feedback-operations.schema.v1'))`);
|
|
27
|
+
await client.query(`
|
|
28
|
+
CREATE TABLE IF NOT EXISTS feedback_operations_state (
|
|
29
|
+
singleton boolean PRIMARY KEY DEFAULT true CHECK (singleton),
|
|
30
|
+
state jsonb NOT NULL
|
|
31
|
+
)
|
|
32
|
+
`);
|
|
33
|
+
await client.query(`INSERT INTO feedback_operations_state (singleton, state)
|
|
34
|
+
VALUES (true, $1::jsonb)
|
|
35
|
+
ON CONFLICT (singleton) DO NOTHING`, [JSON.stringify(EMPTY_STATE)]);
|
|
36
|
+
await client.query('COMMIT');
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
released = await rollbackOrDestroy(client);
|
|
40
|
+
throw error;
|
|
41
|
+
}
|
|
42
|
+
finally {
|
|
43
|
+
if (!released)
|
|
44
|
+
client.release();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
createTrustedFeedback(input) {
|
|
48
|
+
return this.#mutate((store) => store.createTrustedFeedback(input));
|
|
49
|
+
}
|
|
50
|
+
getByGithubIssueNumber(issueNumber) {
|
|
51
|
+
return this.#read((store) => store.getByGithubIssueNumber(issueNumber));
|
|
52
|
+
}
|
|
53
|
+
getByLinearIssueId(linearIssueId) {
|
|
54
|
+
return this.#read((store) => store.getByLinearIssueId(linearIssueId));
|
|
55
|
+
}
|
|
56
|
+
getBySlackMessage(channelId, messageTs) {
|
|
57
|
+
return this.#read((store) => store.getBySlackMessage(channelId, messageTs));
|
|
58
|
+
}
|
|
59
|
+
applyLinearEvent(input) {
|
|
60
|
+
return this.#mutate((store) => store.applyLinearEvent(input));
|
|
61
|
+
}
|
|
62
|
+
claimSlackDelivery(input) {
|
|
63
|
+
return this.#mutate((store) => store.claimSlackDelivery(input));
|
|
64
|
+
}
|
|
65
|
+
markSlackDelivered(input) {
|
|
66
|
+
return this.#mutate((store) => store.markSlackDelivered(input));
|
|
67
|
+
}
|
|
68
|
+
markSlackFailed(input) {
|
|
69
|
+
return this.#mutate((store) => store.markSlackFailed(input));
|
|
70
|
+
}
|
|
71
|
+
markSlackSuppressed(input) {
|
|
72
|
+
return this.#mutate((store) => store.markSlackSuppressed(input));
|
|
73
|
+
}
|
|
74
|
+
claimReporterEmail(input) {
|
|
75
|
+
return this.#mutate((store) => store.claimReporterEmail(input));
|
|
76
|
+
}
|
|
77
|
+
markReporterEmailSent(input) {
|
|
78
|
+
return this.#mutate((store) => store.markReporterEmailSent(input));
|
|
79
|
+
}
|
|
80
|
+
markReporterEmailFailed(input) {
|
|
81
|
+
return this.#mutate((store) => store.markReporterEmailFailed(input));
|
|
82
|
+
}
|
|
83
|
+
markReporterEmailSuppressed(input) {
|
|
84
|
+
return this.#mutate((store) => store.markReporterEmailSuppressed(input));
|
|
85
|
+
}
|
|
86
|
+
markReporterEmailUnknown(input) {
|
|
87
|
+
return this.#mutate((store) => store.markReporterEmailUnknown(input));
|
|
88
|
+
}
|
|
89
|
+
enqueueStartWork(input) {
|
|
90
|
+
return this.#mutate((store) => store.enqueueStartWork(input));
|
|
91
|
+
}
|
|
92
|
+
claimStartWork(input) {
|
|
93
|
+
return this.#mutate((store) => store.claimStartWork(input));
|
|
94
|
+
}
|
|
95
|
+
markStartWorkCompleted(input) {
|
|
96
|
+
return this.#mutate((store) => store.markStartWorkCompleted(input));
|
|
97
|
+
}
|
|
98
|
+
markStartWorkFailed(input) {
|
|
99
|
+
return this.#mutate((store) => store.markStartWorkFailed(input));
|
|
100
|
+
}
|
|
101
|
+
async #read(operation) {
|
|
102
|
+
const client = await this.#pool.connect();
|
|
103
|
+
let released = false;
|
|
104
|
+
try {
|
|
105
|
+
await client.query('BEGIN');
|
|
106
|
+
await client.query(`SELECT set_config('statement_timeout', $1, true)`, [
|
|
107
|
+
`${STATEMENT_TIMEOUT_MS}ms`,
|
|
108
|
+
]);
|
|
109
|
+
const result = await client.query('SELECT state FROM feedback_operations_state WHERE singleton = true');
|
|
110
|
+
await client.query('COMMIT');
|
|
111
|
+
return operation(new InMemoryFeedbackOperationsStore({ state: stateFromRow(result.rows[0]) }));
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
released = await rollbackOrDestroy(client);
|
|
115
|
+
throw error;
|
|
116
|
+
}
|
|
117
|
+
finally {
|
|
118
|
+
if (!released)
|
|
119
|
+
client.release();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
async #mutate(operation) {
|
|
123
|
+
const client = await this.#pool.connect();
|
|
124
|
+
let released = false;
|
|
125
|
+
try {
|
|
126
|
+
await client.query('BEGIN');
|
|
127
|
+
await client.query(`SELECT set_config('lock_timeout', $1, true), set_config('statement_timeout', $2, true)`, [`${LOCK_TIMEOUT_MS}ms`, `${STATEMENT_TIMEOUT_MS}ms`]);
|
|
128
|
+
const state = await lockedState(client);
|
|
129
|
+
const store = new InMemoryFeedbackOperationsStore({ state });
|
|
130
|
+
const result = await operation(store);
|
|
131
|
+
// Provider delivery is not the end of the feedback lifecycle: later signed Linear events still
|
|
132
|
+
// update the same Slack card. Retain the validated intake snapshot and reporter address required by
|
|
133
|
+
// that contract; provider responses and credentials are never part of this state.
|
|
134
|
+
await client.query('UPDATE feedback_operations_state SET state = $1::jsonb WHERE singleton = true', [JSON.stringify(await store.snapshot())]);
|
|
135
|
+
await client.query('COMMIT');
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
released = await rollbackOrDestroy(client);
|
|
140
|
+
throw error;
|
|
141
|
+
}
|
|
142
|
+
finally {
|
|
143
|
+
if (!released)
|
|
144
|
+
client.release();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
async function lockedState(client) {
|
|
149
|
+
const result = await client.query('SELECT state FROM feedback_operations_state WHERE singleton = true FOR UPDATE');
|
|
150
|
+
return stateFromRow(result.rows[0]);
|
|
151
|
+
}
|
|
152
|
+
function stateFromRow(row) {
|
|
153
|
+
if (row === undefined)
|
|
154
|
+
throw new Error('feedback operations state is not initialized');
|
|
155
|
+
return validateFeedbackOperationsState(structuredClone(row.state));
|
|
156
|
+
}
|
|
157
|
+
async function rollbackOrDestroy(client) {
|
|
158
|
+
try {
|
|
159
|
+
await client.query('ROLLBACK');
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
try {
|
|
164
|
+
client.release(true);
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
// Preserve the original transaction failure.
|
|
168
|
+
}
|
|
169
|
+
return true;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=postgres-feedback-operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-feedback-operations.js","sourceRoot":"","sources":["../../src/store/postgres-feedback-operations.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@noodleseed/one",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.98.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Noodle CLI by Noodle Seed — author, run, and deploy declarative MCP servers. Embedding the assistant in your own web app is @noodleseed/assistant.",
|
|
6
6
|
"license": "Apache-2.0",
|