@mandible-ai/mandible 0.3.4 → 0.3.6

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 (53) hide show
  1. package/README.md +1 -1
  2. package/dist/examples/code-pipeline/index.js +2 -12
  3. package/dist/examples/code-pipeline/index.js.map +1 -1
  4. package/dist/examples/code-pipeline/with-providers.js +45 -100
  5. package/dist/examples/code-pipeline/with-providers.js.map +1 -1
  6. package/dist/src/cli/index.js +24 -2
  7. package/dist/src/cli/index.js.map +1 -1
  8. package/dist/src/cli/server.d.ts +58 -13
  9. package/dist/src/cli/server.d.ts.map +1 -1
  10. package/dist/src/cli/server.js +90 -256
  11. package/dist/src/cli/server.js.map +1 -1
  12. package/dist/src/cloud/client.d.ts +2 -1
  13. package/dist/src/cloud/client.d.ts.map +1 -1
  14. package/dist/src/cloud/client.js +6 -0
  15. package/dist/src/cloud/client.js.map +1 -1
  16. package/dist/src/cloud/index.d.ts +1 -1
  17. package/dist/src/cloud/index.d.ts.map +1 -1
  18. package/dist/src/cloud/types.d.ts +41 -1
  19. package/dist/src/cloud/types.d.ts.map +1 -1
  20. package/dist/src/dsl/mandible.d.ts +22 -3
  21. package/dist/src/dsl/mandible.d.ts.map +1 -1
  22. package/dist/src/dsl/mandible.js +73 -10
  23. package/dist/src/dsl/mandible.js.map +1 -1
  24. package/dist/src/environments/github/adapter.d.ts +15 -1
  25. package/dist/src/environments/github/adapter.d.ts.map +1 -1
  26. package/dist/src/environments/github/adapter.js +178 -47
  27. package/dist/src/environments/github/adapter.js.map +1 -1
  28. package/dist/src/environments/github/client.d.ts +18 -1
  29. package/dist/src/environments/github/client.d.ts.map +1 -1
  30. package/dist/src/environments/github/client.js +124 -0
  31. package/dist/src/environments/github/client.js.map +1 -1
  32. package/dist/src/environments/github/index.d.ts +2 -2
  33. package/dist/src/environments/github/index.d.ts.map +1 -1
  34. package/dist/src/environments/github/index.js +1 -1
  35. package/dist/src/environments/github/index.js.map +1 -1
  36. package/dist/src/environments/github/mapper.d.ts +47 -1
  37. package/dist/src/environments/github/mapper.d.ts.map +1 -1
  38. package/dist/src/environments/github/mapper.js +176 -1
  39. package/dist/src/environments/github/mapper.js.map +1 -1
  40. package/dist/src/environments/github/types.d.ts +100 -0
  41. package/dist/src/environments/github/types.d.ts.map +1 -1
  42. package/dist/src/hosts/docker.d.ts.map +1 -1
  43. package/dist/src/hosts/docker.js +22 -4
  44. package/dist/src/hosts/docker.js.map +1 -1
  45. package/dist/src/hosts/local.d.ts +3 -0
  46. package/dist/src/hosts/local.d.ts.map +1 -1
  47. package/dist/src/hosts/local.js +20 -4
  48. package/dist/src/hosts/local.js.map +1 -1
  49. package/dist/src/index.d.ts +2 -0
  50. package/dist/src/index.d.ts.map +1 -1
  51. package/dist/src/index.js +2 -0
  52. package/dist/src/index.js.map +1 -1
  53. package/package.json +1 -1
@@ -1,6 +1,12 @@
1
1
  import { ColonyBuilder } from './builder.js';
2
2
  import type { Environment, ColonyDefinition, Host } from '../core/types.js';
3
+ import type { ColonyModuleRef } from '../cloud/types.js';
3
4
  type ColonyConfigurator = (builder: ColonyBuilder) => ColonyBuilder;
5
+ interface ColonyEntry {
6
+ name: string;
7
+ configurator?: ColonyConfigurator;
8
+ moduleRef?: ColonyModuleRef;
9
+ }
4
10
  export declare class MandibleBuilder {
5
11
  private _name;
6
12
  private _env?;
@@ -14,8 +20,21 @@ export declare class MandibleBuilder {
14
20
  * If not specified, defaults to LocalHost (runs in current process).
15
21
  */
16
22
  host(host: Host): this;
17
- /** Add a colony */
18
- colony(name: string, configure: ColonyConfigurator): this;
23
+ /**
24
+ * Add a colony.
25
+ *
26
+ * Accepts either a configurator closure (for local usage) or a module
27
+ * reference (for cloud deployment where closures can't be serialized).
28
+ *
29
+ * @example Closure (local host):
30
+ * .colony('scout', c => c.sense('task:ready').do('work', handler))
31
+ *
32
+ * @example Module ref (cloud host):
33
+ * .colony('scout', { module: './scout.js', export: 'configureScout', args: [repoRoot] })
34
+ */
35
+ colony(name: string, configure: ColonyConfigurator | ColonyModuleRef): this;
36
+ /** Get the raw colony entries (used by CloudHost for bundling) */
37
+ get colonyEntries(): ReadonlyArray<Readonly<ColonyEntry>>;
19
38
  /**
20
39
  * Start colonies on the configured host.
21
40
  * What "start" means depends on the host:
@@ -32,7 +51,7 @@ export declare class MandibleBuilder {
32
51
  * Build colony definitions without starting anything.
33
52
  * Useful for testing or custom orchestration.
34
53
  */
35
- build(env?: Environment): ColonyDefinition[];
54
+ build(env?: Environment): Promise<ColonyDefinition[]>;
36
55
  private buildDefinitions;
37
56
  private resolveHost;
38
57
  private requireEnv;
@@ -1 +1 @@
1
- {"version":3,"file":"mandible.d.ts","sourceRoot":"","sources":["../../../src/dsl/mandible.ts"],"names":[],"mappings":"AAyCA,OAAO,EAAE,aAAa,EAA2B,MAAM,cAAc,CAAC;AACtE,OAAO,KAAK,EACV,WAAW,EAAE,gBAAgB,EAC7B,IAAI,EACL,MAAM,kBAAkB,CAAC;AAE1B,KAAK,kBAAkB,GAAG,CAAC,OAAO,EAAE,aAAa,KAAK,aAAa,CAAC;AAOpE,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,IAAI,CAAC,CAAc;IAC3B,OAAO,CAAC,KAAK,CAAC,CAAO;IACrB,OAAO,CAAC,SAAS,CAAqB;gBAE1B,IAAI,EAAE,MAAM;IAIxB,gEAAgE;IAChE,WAAW,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAKnC;;;OAGG;IACH,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAKtB,mBAAmB;IACnB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,GAAG,IAAI;IAKzD;;;;;;;;;;OAUG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B;;;OAGG;IACH,KAAK,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,gBAAgB,EAAE;IAU5C,OAAO,CAAC,gBAAgB;YAOV,WAAW;IAOzB,OAAO,CAAC,UAAU;CAQnB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAEtD"}
1
+ {"version":3,"file":"mandible.d.ts","sourceRoot":"","sources":["../../../src/dsl/mandible.ts"],"names":[],"mappings":"AA6CA,OAAO,EAAE,aAAa,EAA2B,MAAM,cAAc,CAAC;AACtE,OAAO,KAAK,EACV,WAAW,EAAE,gBAAgB,EAC7B,IAAI,EACL,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,KAAK,kBAAkB,GAAG,CAAC,OAAO,EAAE,aAAa,KAAK,aAAa,CAAC;AAEpE,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAcD,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,IAAI,CAAC,CAAc;IAC3B,OAAO,CAAC,KAAK,CAAC,CAAO;IACrB,OAAO,CAAC,SAAS,CAAqB;gBAE1B,IAAI,EAAE,MAAM;IAIxB,gEAAgE;IAChE,WAAW,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAKnC;;;OAGG;IACH,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAKtB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,GAAG,eAAe,GAAG,IAAI;IAS3E,kEAAkE;IAClE,IAAI,aAAa,IAAI,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAExD;IAED;;;;;;;;;;OAUG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5B;;;OAGG;IACG,KAAK,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAU7C,gBAAgB;YAgBhB,WAAW;IAOzB,OAAO,CAAC,UAAU;CAQnB;AAuBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAEtD"}
@@ -31,7 +31,11 @@
31
31
  // const host = await mandible('review')
32
32
  // .environment(env) // same environment, real signal substrate
33
33
  // .host(cloud({ apiKey: CLOUD_KEY })) // colonies run in Edera microVMs
34
- // .colony('worker', c => c.sense('task:ready').do('work', handler))
34
+ // .colony('scout', {
35
+ // module: './scout.js',
36
+ // export: 'configureScout',
37
+ // args: [TARGET_REPO],
38
+ // })
35
39
  // .start();
36
40
  //
37
41
  // // Dashboard is opt-in after start:
@@ -39,6 +43,15 @@
39
43
  //
40
44
  // ============================================================
41
45
  import { colony as colonyBuilder } from './builder.js';
46
+ /** Check if a value is a ColonyModuleRef (has module + export fields) */
47
+ function isModuleRef(value) {
48
+ return (typeof value === 'object' &&
49
+ value !== null &&
50
+ 'module' in value &&
51
+ 'export' in value &&
52
+ typeof value.module === 'string' &&
53
+ typeof value.export === 'string');
54
+ }
42
55
  export class MandibleBuilder {
43
56
  _name;
44
57
  _env;
@@ -60,11 +73,31 @@ export class MandibleBuilder {
60
73
  this._host = host;
61
74
  return this;
62
75
  }
63
- /** Add a colony */
76
+ /**
77
+ * Add a colony.
78
+ *
79
+ * Accepts either a configurator closure (for local usage) or a module
80
+ * reference (for cloud deployment where closures can't be serialized).
81
+ *
82
+ * @example Closure (local host):
83
+ * .colony('scout', c => c.sense('task:ready').do('work', handler))
84
+ *
85
+ * @example Module ref (cloud host):
86
+ * .colony('scout', { module: './scout.js', export: 'configureScout', args: [repoRoot] })
87
+ */
64
88
  colony(name, configure) {
65
- this._colonies.push({ name, configurator: configure });
89
+ if (isModuleRef(configure)) {
90
+ this._colonies.push({ name, moduleRef: configure });
91
+ }
92
+ else {
93
+ this._colonies.push({ name, configurator: configure });
94
+ }
66
95
  return this;
67
96
  }
97
+ /** Get the raw colony entries (used by CloudHost for bundling) */
98
+ get colonyEntries() {
99
+ return this._colonies;
100
+ }
68
101
  /**
69
102
  * Start colonies on the configured host.
70
103
  * What "start" means depends on the host:
@@ -79,7 +112,11 @@ export class MandibleBuilder {
79
112
  async start() {
80
113
  const env = this.requireEnv();
81
114
  const host = await this.resolveHost();
82
- const definitions = this.buildDefinitions(env);
115
+ const definitions = await this.buildDefinitions(env);
116
+ // Pass colony entries to the host if it supports module refs (CloudHost)
117
+ if ('setColonyEntries' in host && typeof host.setColonyEntries === 'function') {
118
+ host.setColonyEntries(this._colonies);
119
+ }
83
120
  await host.start(definitions);
84
121
  return host;
85
122
  }
@@ -87,18 +124,28 @@ export class MandibleBuilder {
87
124
  * Build colony definitions without starting anything.
88
125
  * Useful for testing or custom orchestration.
89
126
  */
90
- build(env) {
127
+ async build(env) {
91
128
  const targetEnv = env ?? this._env;
92
129
  if (!targetEnv) {
93
130
  throw new Error(`"${this._name}" requires an environment. Call .environment(env) or pass one to .build(env).`);
94
131
  }
95
132
  return this.buildDefinitions(targetEnv);
96
133
  }
97
- buildDefinitions(env) {
98
- return this._colonies.map(entry => {
99
- const builder = entry.configurator(colonyBuilder(entry.name));
100
- return builder.in(env).build();
101
- });
134
+ async buildDefinitions(env) {
135
+ const results = [];
136
+ for (const entry of this._colonies) {
137
+ if (entry.configurator) {
138
+ const builder = entry.configurator(colonyBuilder(entry.name));
139
+ results.push(builder.in(env).build());
140
+ }
141
+ else if (entry.moduleRef) {
142
+ // For module refs, resolve via dynamic import (works for local host)
143
+ const configurator = await resolveModuleRef(entry.moduleRef);
144
+ const builder = configurator(colonyBuilder(entry.name));
145
+ results.push(builder.in(env).build());
146
+ }
147
+ }
148
+ return results;
102
149
  }
103
150
  async resolveHost() {
104
151
  if (this._host)
@@ -114,6 +161,22 @@ export class MandibleBuilder {
114
161
  return this._env;
115
162
  }
116
163
  }
164
+ /**
165
+ * Resolve a ColonyModuleRef to a live configurator function via dynamic import.
166
+ * Used by LocalHost to run module-ref-based colonies locally.
167
+ */
168
+ async function resolveModuleRef(ref) {
169
+ const mod = await import(ref.module);
170
+ const fn = mod[ref.export];
171
+ if (typeof fn !== 'function') {
172
+ throw new Error(`Module "${ref.module}" does not export a function named "${ref.export}"`);
173
+ }
174
+ const result = fn(...(ref.args ?? []));
175
+ if (typeof result !== 'function') {
176
+ throw new Error(`"${ref.export}" from "${ref.module}" must return a configurator function (builder => builder), got ${typeof result}`);
177
+ }
178
+ return result;
179
+ }
117
180
  /**
118
181
  * Entry point for the mandible DSL.
119
182
  *
@@ -1 +1 @@
1
- {"version":3,"file":"mandible.js","sourceRoot":"","sources":["../../../src/dsl/mandible.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mandible.js","sourceRoot":"","sources":["../../../src/dsl/mandible.ts"],"names":[],"mappings":"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"}
@@ -9,10 +9,22 @@ export declare class GitHubEnvironment implements Environment {
9
9
  private readonly concentrationMapper;
10
10
  private readonly dependencyMapper;
11
11
  private readonly issueFilter;
12
+ private readonly prTypeMapper;
13
+ private readonly prPayloadMapper;
14
+ private readonly prConcentrationMapper;
15
+ private readonly prFilter;
16
+ private readonly includePRs;
17
+ private readonly includeIssues;
18
+ private readonly fetchReviews;
19
+ private readonly persistentClaims;
20
+ private readonly claimLabelPrefix;
21
+ private readonly fetchReactionsEnabled;
12
22
  private readonly decayRate;
13
23
  private readonly concentrationFloor;
14
24
  private signals;
15
25
  private withdrawn;
26
+ private prReviews;
27
+ private reactions;
16
28
  private lastSyncAt;
17
29
  private lastDecayAt;
18
30
  private initialized;
@@ -20,12 +32,14 @@ export declare class GitHubEnvironment implements Environment {
20
32
  private signalId;
21
33
  private issueNumberFromSignalId;
22
34
  private issueToSignal;
35
+ private prToSignal;
23
36
  private ensureInit;
24
37
  /**
25
- * Core sync method. Fetches issues from GitHub and updates local cache.
38
+ * Core sync method. Fetches issues and PRs from GitHub and updates local cache.
26
39
  * Returns the list of new signal IDs that appeared since last sync.
27
40
  */
28
41
  syncFromGitHub(): Promise<string[]>;
42
+ private mergeSignal;
29
43
  /**
30
44
  * Public method to force a manual refresh. Useful for testing.
31
45
  */
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/environments/github/adapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAC5C,YAAY,EAAE,WAAW,EAC1B,MAAM,qBAAqB,CAAC;AAI7B,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,YAAY,CAAC;AAS/D,qBAAa,iBAAkB,YAAW,WAAW;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiC;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkD;IAChF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA0D;IAC9F,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA4D;IAC7F,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgD;IAC5E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAG5C,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,SAAS,CAA6B;IAG9C,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,eAAe;IAiBnC,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,aAAa;YAgCP,UAAU;IAMxB;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAiEzC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IASrB,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAS9C,OAAO,CACX,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;KAAE,GAClE,OAAO,CAAC,MAAM,CAAC;IA4BZ,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBzC,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,aAAa,GAAE,MAAe,GAC7B,OAAO,CAAC,OAAO,CAAC;IAqBb,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9C,KAAK,CACH,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GACjC,YAAY;IA0CT,OAAO,CACX,KAAK,EAAE,WAAW,GAAG;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,GAClD,OAAO,CAAC,MAAM,EAAE,CAAC;IAgBd,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC;IAuD7B,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAIpC"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../../src/environments/github/adapter.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- // PURPOSE: GitHub environment adapter — GitHub Issues as a stigmergy substrate
2
- // PURPOSE: Polling with ETag caching, concentration reinforcement, advisory claims
1
+ // PURPOSE: GitHub environment adapter — GitHub Issues + PRs as a stigmergy substrate
2
+ // PURPOSE: Polling with ETag caching, concentration reinforcement, label-based claims
3
3
  import { matchesQuery, isClaimExpired } from '../../core/signal.js';
4
4
  import { validateSignalInput } from '../../core/validation.js';
5
5
  import { GitHubClient } from './client.js';
6
- import { defaultTypeMapper, defaultPayloadMapper, defaultConcentrationMapper, defaultDependencyMapper, computeDependencyBoosts, } from './mapper.js';
6
+ import { defaultTypeMapper, defaultPayloadMapper, defaultConcentrationMapper, defaultDependencyMapper, defaultPRTypeMapper, defaultPRPayloadMapper, defaultPRConcentrationMapper, computeReactionScore, computeDependencyBoosts, } from './mapper.js';
7
7
  export class GitHubEnvironment {
8
8
  name;
9
9
  config;
@@ -13,11 +13,25 @@ export class GitHubEnvironment {
13
13
  concentrationMapper;
14
14
  dependencyMapper;
15
15
  issueFilter;
16
+ prTypeMapper;
17
+ prPayloadMapper;
18
+ prConcentrationMapper;
19
+ prFilter;
20
+ includePRs;
21
+ includeIssues;
22
+ fetchReviews;
23
+ persistentClaims;
24
+ claimLabelPrefix;
25
+ fetchReactionsEnabled;
16
26
  decayRate;
17
27
  concentrationFloor;
18
28
  // In-memory signal cache — GitHub API is source of truth
19
29
  signals = new Map();
20
30
  withdrawn = new Map();
31
+ // Cache of reviews per PR number
32
+ prReviews = new Map();
33
+ // Cache of reactions per issue/PR number
34
+ reactions = new Map();
21
35
  // Tracking for decay
22
36
  lastSyncAt = Date.now();
23
37
  lastDecayAt = Date.now();
@@ -31,6 +45,16 @@ export class GitHubEnvironment {
31
45
  this.concentrationMapper = config.concentrationMapper ?? defaultConcentrationMapper;
32
46
  this.dependencyMapper = config.dependencyMapper ?? defaultDependencyMapper;
33
47
  this.issueFilter = config.issueFilter;
48
+ this.prTypeMapper = config.prTypeMapper ?? defaultPRTypeMapper;
49
+ this.prPayloadMapper = config.prPayloadMapper ?? defaultPRPayloadMapper;
50
+ this.prConcentrationMapper = config.prConcentrationMapper ?? defaultPRConcentrationMapper;
51
+ this.prFilter = config.prFilter;
52
+ this.includePRs = config.includePRs !== false;
53
+ this.includeIssues = config.includeIssues !== false;
54
+ this.fetchReviews = config.fetchReviews !== false;
55
+ this.persistentClaims = config.persistentClaims ?? false;
56
+ this.claimLabelPrefix = config.claimLabelPrefix ?? 'mandible:claimed';
57
+ this.fetchReactionsEnabled = config.fetchReactions ?? false;
34
58
  this.decayRate = config.decayRate ?? 0.001;
35
59
  this.concentrationFloor = config.concentrationFloor ?? 0.05;
36
60
  }
@@ -53,6 +77,14 @@ export class GitHubEnvironment {
53
77
  const payload = this.payloadMapper(issue);
54
78
  const concentration = this.concentrationMapper(issue, this.config);
55
79
  const tags = issue.labels.map(l => l.name);
80
+ // Restore persistent claim from labels
81
+ let claimed_by;
82
+ if (this.persistentClaims) {
83
+ const claimLabel = issue.labels.find(l => l.name.startsWith(this.claimLabelPrefix + ':'));
84
+ if (claimLabel) {
85
+ claimed_by = claimLabel.name.slice(this.claimLabelPrefix.length + 1);
86
+ }
87
+ }
56
88
  const signal = {
57
89
  id,
58
90
  type,
@@ -62,6 +94,7 @@ export class GitHubEnvironment {
62
94
  deposited_by: 'github',
63
95
  concentration,
64
96
  tags,
97
+ ...(claimed_by ? { claimed_by, claimed_at: Date.now() } : {}),
65
98
  },
66
99
  };
67
100
  // Wire dependency edges via pluggable mapper
@@ -72,6 +105,36 @@ export class GitHubEnvironment {
72
105
  return signal;
73
106
  }
74
107
  // ----------------------------------------------------------
108
+ // PR → Signal conversion
109
+ // ----------------------------------------------------------
110
+ prToSignal(pr, reviews) {
111
+ const id = this.signalId(pr.number);
112
+ const type = this.prTypeMapper(pr, reviews);
113
+ const payload = this.prPayloadMapper(pr, reviews);
114
+ const concentration = this.prConcentrationMapper(pr, reviews, this.config);
115
+ const tags = pr.labels.map(l => l.name);
116
+ // Restore persistent claim from labels
117
+ let claimed_by;
118
+ if (this.persistentClaims) {
119
+ const claimLabel = pr.labels.find(l => l.name.startsWith(this.claimLabelPrefix + ':'));
120
+ if (claimLabel) {
121
+ claimed_by = claimLabel.name.slice(this.claimLabelPrefix.length + 1);
122
+ }
123
+ }
124
+ return {
125
+ id,
126
+ type,
127
+ payload,
128
+ meta: {
129
+ deposited_at: new Date(pr.created_at).getTime(),
130
+ deposited_by: 'github',
131
+ concentration,
132
+ tags,
133
+ ...(claimed_by ? { claimed_by, claimed_at: Date.now() } : {}),
134
+ },
135
+ };
136
+ }
137
+ // ----------------------------------------------------------
75
138
  // Sync from GitHub API
76
139
  // ----------------------------------------------------------
77
140
  async ensureInit() {
@@ -81,45 +144,49 @@ export class GitHubEnvironment {
81
144
  this.initialized = true;
82
145
  }
83
146
  /**
84
- * Core sync method. Fetches issues from GitHub and updates local cache.
147
+ * Core sync method. Fetches issues and PRs from GitHub and updates local cache.
85
148
  * Returns the list of new signal IDs that appeared since last sync.
86
149
  */
87
150
  async syncFromGitHub() {
88
- const result = await this.client.fetchIssues();
89
- // 304 Not Modified — no changes since last poll
90
- if (result.issues === null) {
91
- this.lastSyncAt = Date.now();
92
- return [];
93
- }
94
151
  const newSignalIds = [];
95
- const seenIds = new Set();
96
- for (const issue of result.issues) {
97
- // Skip pull requests (GitHub returns PRs in the issues endpoint)
98
- if (issue.pull_request)
99
- continue;
100
- // Apply custom filter
101
- if (this.issueFilter && !this.issueFilter(issue))
102
- continue;
103
- const freshSignal = this.issueToSignal(issue);
104
- seenIds.add(freshSignal.id);
105
- const existing = this.signals.get(freshSignal.id);
106
- if (existing) {
107
- // Reinforcement: take the max of current and fresh concentration
108
- // Preserve claim state from local cache
109
- freshSignal.meta.concentration = Math.max(existing.meta.concentration, freshSignal.meta.concentration);
110
- freshSignal.meta.claimed_by = existing.meta.claimed_by;
111
- freshSignal.meta.claimed_at = existing.meta.claimed_at;
112
- freshSignal.meta.claim_lease = existing.meta.claim_lease;
152
+ // Sync issues
153
+ if (this.includeIssues) {
154
+ const result = await this.client.fetchIssues();
155
+ if (result.issues !== null) {
156
+ for (const issue of result.issues) {
157
+ // Skip pull requests (GitHub returns PRs in the issues endpoint)
158
+ if (issue.pull_request)
159
+ continue;
160
+ if (this.issueFilter && !this.issueFilter(issue))
161
+ continue;
162
+ const freshSignal = this.issueToSignal(issue);
163
+ this.mergeSignal(freshSignal, newSignalIds);
164
+ }
113
165
  }
114
- else {
115
- newSignalIds.push(freshSignal.id);
166
+ }
167
+ // Sync pull requests
168
+ if (this.includePRs) {
169
+ const prResult = await this.client.fetchPullRequests();
170
+ if (prResult.prs !== null) {
171
+ for (const pr of prResult.prs) {
172
+ if (this.prFilter && !this.prFilter(pr))
173
+ continue;
174
+ let reviews = [];
175
+ if (this.fetchReviews) {
176
+ try {
177
+ reviews = await this.client.fetchReviews(pr.number);
178
+ }
179
+ catch {
180
+ // Use empty reviews on failure — signal still gets created
181
+ }
182
+ this.prReviews.set(pr.number, reviews);
183
+ }
184
+ const freshSignal = this.prToSignal(pr, reviews);
185
+ this.mergeSignal(freshSignal, newSignalIds);
186
+ }
116
187
  }
117
- this.signals.set(freshSignal.id, freshSignal);
118
188
  }
119
- // Issues that disappeared from the API (closed externally) are NOT removed.
120
- // They stop being reinforced and natural decay handles evaporation.
121
- // This is the stigmergy way: absence of reinforcement = signal fades.
122
- // Apply dependency-aware concentration adjustments (boosts and penalties)
189
+ // Apply dependency-aware concentration adjustments
123
190
  const boosts = computeDependencyBoosts(this.signals, {
124
191
  rootBoost: this.config.dependencyBoost?.rootBoost,
125
192
  dependentBoost: this.config.dependencyBoost?.dependentBoost,
@@ -132,9 +199,44 @@ export class GitHubEnvironment {
132
199
  signal.meta.concentration = Math.max(this.concentrationFloor, Math.min(1.0, signal.meta.concentration + adjustment));
133
200
  }
134
201
  }
202
+ // Apply reaction-based concentration adjustments
203
+ if (this.fetchReactionsEnabled) {
204
+ for (const [id, signal] of this.signals) {
205
+ const issueNumber = this.issueNumberFromSignalId(id);
206
+ if (issueNumber === null)
207
+ continue;
208
+ try {
209
+ const reactions = await this.client.fetchReactions(issueNumber);
210
+ this.reactions.set(issueNumber, reactions);
211
+ const reactionAdj = computeReactionScore(reactions, this.config.reactionWeights);
212
+ if (Math.abs(reactionAdj) > 0.001) {
213
+ signal.meta.concentration = Math.max(this.concentrationFloor, Math.min(1.0, signal.meta.concentration + reactionAdj));
214
+ }
215
+ }
216
+ catch {
217
+ // Use cached reactions on failure
218
+ }
219
+ }
220
+ }
135
221
  this.lastSyncAt = Date.now();
136
222
  return newSignalIds;
137
223
  }
224
+ mergeSignal(freshSignal, newSignalIds) {
225
+ const existing = this.signals.get(freshSignal.id);
226
+ if (existing) {
227
+ freshSignal.meta.concentration = Math.max(existing.meta.concentration, freshSignal.meta.concentration);
228
+ // Preserve in-memory claim state unless using persistent claims
229
+ if (!this.persistentClaims) {
230
+ freshSignal.meta.claimed_by = existing.meta.claimed_by;
231
+ freshSignal.meta.claimed_at = existing.meta.claimed_at;
232
+ freshSignal.meta.claim_lease = existing.meta.claim_lease;
233
+ }
234
+ }
235
+ else {
236
+ newSignalIds.push(freshSignal.id);
237
+ }
238
+ this.signals.set(freshSignal.id, freshSignal);
239
+ }
138
240
  /**
139
241
  * Public method to force a manual refresh. Useful for testing.
140
242
  */
@@ -200,11 +302,25 @@ export class GitHubEnvironment {
200
302
  if (!isClaimExpired(signal)) {
201
303
  return false; // Already claimed and not expired
202
304
  }
203
- // Expired claim — allow takeover
305
+ // Expired claim — allow takeover. Remove old persistent label if needed.
306
+ if (this.persistentClaims) {
307
+ const issueNumber = this.issueNumberFromSignalId(signalId);
308
+ const oldLabel = `${this.claimLabelPrefix}:${signal.meta.claimed_by}`;
309
+ if (issueNumber !== null) {
310
+ await this.client.removeLabel(issueNumber, oldLabel);
311
+ }
312
+ }
204
313
  }
205
314
  signal.meta.claimed_by = claimant;
206
315
  signal.meta.claimed_at = Date.now();
207
316
  signal.meta.claim_lease = leaseDuration;
317
+ // Persist claim as a GitHub label
318
+ if (this.persistentClaims) {
319
+ const issueNumber = this.issueNumberFromSignalId(signalId);
320
+ if (issueNumber !== null) {
321
+ await this.client.addLabel(issueNumber, `${this.claimLabelPrefix}:${claimant}`);
322
+ }
323
+ }
208
324
  return true;
209
325
  }
210
326
  async release(signalId) {
@@ -212,6 +328,13 @@ export class GitHubEnvironment {
212
328
  const signal = this.signals.get(signalId);
213
329
  if (!signal)
214
330
  return;
331
+ // Remove persistent claim label
332
+ if (this.persistentClaims && signal.meta.claimed_by) {
333
+ const issueNumber = this.issueNumberFromSignalId(signalId);
334
+ if (issueNumber !== null) {
335
+ await this.client.removeLabel(issueNumber, `${this.claimLabelPrefix}:${signal.meta.claimed_by}`);
336
+ }
337
+ }
215
338
  signal.meta.claimed_by = undefined;
216
339
  signal.meta.claimed_at = undefined;
217
340
  signal.meta.claim_lease = undefined;
@@ -219,13 +342,23 @@ export class GitHubEnvironment {
219
342
  watch(query, callback) {
220
343
  const seen = new Set();
221
344
  let active = true;
222
- let pollTimer;
223
- const pollInterval = this.config.pollInterval ?? 30_000;
224
- const emitMatches = async () => {
345
+ let scheduledTimer;
346
+ const basePollInterval = this.config.pollInterval ?? 30_000;
347
+ const backpressureConfig = this.config.rateLimitBackpressure;
348
+ const warningThreshold = backpressureConfig?.warningThreshold ?? 0.2;
349
+ const criticalThreshold = backpressureConfig?.criticalThreshold ?? 0.05;
350
+ const scheduleNext = () => {
351
+ if (!active)
352
+ return;
353
+ const backoffMs = this.client.getBackoffMs(warningThreshold, criticalThreshold);
354
+ const nextInterval = basePollInterval + backoffMs;
355
+ scheduledTimer = setTimeout(poll, nextInterval);
356
+ };
357
+ const poll = async () => {
225
358
  if (!active)
226
359
  return;
227
360
  try {
228
- const newIds = await this.syncFromGitHub();
361
+ await this.syncFromGitHub();
229
362
  if (!this.initialized)
230
363
  this.initialized = true;
231
364
  for (const [id, signal] of this.signals) {
@@ -242,20 +375,18 @@ export class GitHubEnvironment {
242
375
  catch {
243
376
  // Swallow errors during poll — will retry next cycle
244
377
  }
378
+ scheduleNext();
245
379
  };
246
- // Initial sync + emit
380
+ // Initial sync + emit, then start polling
247
381
  const setup = async () => {
248
- await emitMatches();
249
- if (!active)
250
- return;
251
- pollTimer = setInterval(emitMatches, pollInterval);
382
+ await poll();
252
383
  };
253
384
  setup();
254
385
  return {
255
386
  unsubscribe() {
256
387
  active = false;
257
- if (pollTimer)
258
- clearInterval(pollTimer);
388
+ if (scheduledTimer)
389
+ clearTimeout(scheduledTimer);
259
390
  },
260
391
  };
261
392
  }
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/environments/github/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/environments/github/adapter.ts"],"names":[],"mappings":"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"}