@cat-factory/integrations 0.120.0 → 0.121.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.
Files changed (28) hide show
  1. package/dist/index.d.ts +3 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/modules/providers/LocalModelEndpointService.d.ts +36 -1
  6. package/dist/modules/providers/LocalModelEndpointService.d.ts.map +1 -1
  7. package/dist/modules/providers/LocalModelEndpointService.js +63 -19
  8. package/dist/modules/providers/LocalModelEndpointService.js.map +1 -1
  9. package/dist/modules/providers/localModelUrl.d.ts +47 -9
  10. package/dist/modules/providers/localModelUrl.d.ts.map +1 -1
  11. package/dist/modules/providers/localModelUrl.js +129 -35
  12. package/dist/modules/providers/localModelUrl.js.map +1 -1
  13. package/dist/modules/tasks/BugHuntService.js +14 -6
  14. package/dist/modules/tasks/BugHuntService.js.map +1 -1
  15. package/dist/modules/tasks/GitHubIssuesProvider.d.ts +2 -2
  16. package/dist/modules/tasks/GitHubIssuesProvider.js +1 -1
  17. package/dist/modules/tasks/JiraProvider.d.ts +2 -2
  18. package/dist/modules/tasks/JiraProvider.js +1 -1
  19. package/dist/modules/tasks/LinearTaskProvider.d.ts +2 -2
  20. package/dist/modules/tasks/LinearTaskProvider.js +1 -1
  21. package/dist/modules/tasks/intakeMatch.logic.d.ts +38 -11
  22. package/dist/modules/tasks/intakeMatch.logic.d.ts.map +1 -1
  23. package/dist/modules/tasks/intakeMatch.logic.js +79 -27
  24. package/dist/modules/tasks/intakeMatch.logic.js.map +1 -1
  25. package/dist/modules/tasks/webhook/adapters.d.ts.map +1 -1
  26. package/dist/modules/tasks/webhook/adapters.js +11 -0
  27. package/dist/modules/tasks/webhook/adapters.js.map +1 -1
  28. package/package.json +4 -4
package/dist/index.d.ts CHANGED
@@ -42,7 +42,8 @@ export { BugIntakeService, type BugIntakeServiceDependencies, type BugIntakeOutc
42
42
  export { BugHuntService, BUG_HUNT_SCAN_LIMIT, type BugHuntServiceDependencies, } from './modules/tasks/BugHuntService.js';
43
43
  export { trackerWebhookPath, type TaskSourceWebhookState, } from './modules/tasks/TaskConnectionService.js';
44
44
  export { TrackerWebhookService, type ReviewReplyGateway, type TrackerWebhookOutcome, type TrackerWebhookServiceDependencies, } from './modules/tasks/TrackerWebhookService.js';
45
- export { issueEventMatchesIntake } from './modules/tasks/intakeMatch.logic.js';
45
+ export { judgeIssueEventForIntake } from './modules/tasks/intakeMatch.logic.js';
46
+ export type { IntakeMatchVerdict, IntakePredicateName } from './modules/tasks/intakeMatch.logic.js';
46
47
  export { githubIssuesWebhookAdapter, jiraWebhookAdapter, linearWebhookAdapter, } from './modules/tasks/webhook/adapters.js';
47
48
  export { MapTaskSourceRegistry, type TaskContextView, renderTaskContext, buildTaskExcerpt, } from './modules/tasks/tasks.logic.js';
48
49
  export * as tasksLogic from './modules/tasks/tasks.logic.js';
@@ -118,7 +119,7 @@ export { ApiKeyService, type ApiKeyServiceDependencies, type ApiKeySummary, type
118
119
  export { PublicApiKeyService, scopeSatisfies, type PublicApiKeyServiceDependencies, type PublicApiKeyAuth, type IssuedPublicApiKey, } from './modules/publicApi/PublicApiKeyService.js';
119
120
  export { PersonalSubscriptionService, type PersonalSubscriptionServiceDependencies, type LeasedPersonalToken, DEFAULT_ACTIVATION_TTL_MS, DEFAULT_RENEW_WARNING_MS, } from './modules/providers/PersonalSubscriptionService.js';
120
121
  export { LocalModelEndpointService, type LocalModelEndpointServiceDependencies, type ResolvedLocalEndpoint, } from './modules/providers/LocalModelEndpointService.js';
121
- export { fetchLocalRunner, localRunnerUrlError } from './modules/providers/localModelUrl.js';
122
+ export { fetchLocalRunner, type LocalRunnerUrlPolicy, type LocalRunnerUrlRefusal, localRunnerUrlRefusal, runnerRequestUrl, } from './modules/providers/localModelUrl.js';
122
123
  export { UserSecretService, type UserSecretServiceDependencies, } from './modules/providers/UserSecretService.js';
123
124
  export { UserSecretKindRegistry, defaultUserSecretKindRegistry, githubPatUserSecretKind, type UserSecretKindHandler, type UserSecretTestInput, } from './modules/providers/userSecretKinds.js';
124
125
  export { describeGitHubPatScope, summarizeGitHubPatScope, type GitHubPatScopeReport, } from './modules/providers/githubPatScope.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,yBAAyB,EACzB,KAAK,qCAAqC,GAC3C,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,KAAK,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AACjG,OAAO,EACL,iBAAiB,EACjB,KAAK,6BAA6B,GACnC,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,KAAK,0BAA0B,EAAE,MAAM,oCAAoC,CAAA;AACpG,OAAO,EACL,uBAAuB,EACvB,KAAK,mCAAmC,GACzC,MAAM,0CAA0C,CAAA;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAA;AAClF,OAAO,KAAK,gBAAgB,MAAM,sCAAsC,CAAA;AACxE,OAAO,EACL,uBAAuB,EACvB,KAAK,mCAAmC,EACxC,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,6CAA6C,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAA;AAEtE,OAAO,EACL,yBAAyB,EACzB,KAAK,qCAAqC,GAC3C,MAAM,kDAAkD,CAAA;AACzD,OAAO,EACL,8BAA8B,EAC9B,KAAK,0CAA0C,GAChD,MAAM,uDAAuD,CAAA;AAC9D,OAAO,EACL,qBAAqB,EACrB,KAAK,iCAAiC,EACtC,gBAAgB,GACjB,MAAM,8CAA8C,CAAA;AACrD,OAAO,EACL,sBAAsB,EACtB,KAAK,kCAAkC,GACxC,MAAM,+CAA+C,CAAA;AACtD,OAAO,EACL,mBAAmB,EACnB,KAAK,+BAA+B,EACpC,KAAK,WAAW,GACjB,MAAM,4CAA4C,CAAA;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAA;AAClF,OAAO,KAAK,cAAc,MAAM,wCAAwC,CAAA;AACxE,OAAO,KAAK,eAAe,MAAM,yCAAyC,CAAA;AAC1E,OAAO,KAAK,WAAW,MAAM,qCAAqC,CAAA;AAClE,OAAO,KAAK,eAAe,MAAM,0CAA0C,CAAA;AAC3E,OAAO,KAAK,UAAU,MAAM,oCAAoC,CAAA;AAChE,OAAO,KAAK,WAAW,MAAM,qCAAqC,CAAA;AAClE,OAAO,KAAK,WAAW,MAAM,qCAAqC,CAAA;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAA;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAA;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AAEvE,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,IAAI,sBAAsB,GACzC,MAAM,6BAA6B,CAAA;AAGpC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAA;AAClG,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAA;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAA;AAC9E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAA;AACnF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAA;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAA;AACtF,OAAO,KAAK,eAAe,MAAM,0CAA0C,CAAA;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAA;AAGjF,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EACzB,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,eAAe,GACrB,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EACL,qBAAqB,EACrB,KAAK,iCAAiC,GACvC,MAAM,0CAA0C,CAAA;AACjD,OAAO,EACL,iBAAiB,EACjB,KAAK,6BAA6B,EAClC,YAAY,GACb,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACL,eAAe,EACf,KAAK,2BAA2B,GACjC,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EACL,gBAAgB,EAChB,KAAK,4BAA4B,EACjC,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,KAAK,0BAA0B,GAChC,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACL,kBAAkB,EAClB,KAAK,sBAAsB,GAC5B,MAAM,0CAA0C,CAAA;AACjD,OAAO,EACL,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,iCAAiC,GACvC,MAAM,0CAA0C,CAAA;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAC/E,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AACnG,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,qBAAqB,EACrB,KAAK,eAAe,EACpB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAA;AAC5D,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,gBAAgB,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAC1E,OAAO,EACL,oBAAoB,EACpB,KAAK,gCAAgC,EACrC,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,SAAS,GACf,MAAM,2CAA2C,CAAA;AAClD,OAAO,KAAK,eAAe,MAAM,wCAAwC,CAAA;AACzE,OAAO,KAAK,kBAAkB,MAAM,2CAA2C,CAAA;AAC/E,OAAO,KAAK,iBAAiB,MAAM,0CAA0C,CAAA;AAC7E,OAAO,KAAK,oBAAoB,MAAM,6CAA6C,CAAA;AACnF,OAAO,EAAE,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAClG,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,KAAK,iCAAiC,GACvC,MAAM,8CAA8C,CAAA;AACrD,OAAO,EACL,WAAW,EACX,4BAA4B,GAC7B,MAAM,8CAA8C,CAAA;AACrD,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,KAAK,kBAAkB,GACxB,MAAM,4CAA4C,CAAA;AACnD,OAAO,EACL,yBAAyB,EACzB,KAAK,uBAAuB,GAC7B,MAAM,0CAA0C,CAAA;AACjD,OAAO,KAAK,iBAAiB,MAAM,wCAAwC,CAAA;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAA;AACjF,OAAO,EACL,oBAAoB,EACpB,KAAK,gCAAgC,GACtC,MAAM,yCAAyC,CAAA;AAGhD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAE5E,OAAO,EACL,4BAA4B,EAC5B,KAAK,wCAAwC,EAC7C,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,GAC1B,MAAM,wDAAwD,CAAA;AAI/D,OAAO,EAAE,8BAA8B,EAAE,MAAM,oDAAoD,CAAA;AAInG,YAAY,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAA;AAM5F,OAAO,EACL,0BAA0B,EAC1B,iCAAiC,EACjC,0BAA0B,EAC1B,4BAA4B,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,+BAA+B,GACrC,MAAM,gDAAgD,CAAA;AACvD,OAAO,EACL,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,GAC5B,MAAM,+CAA+C,CAAA;AACtD,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,KAAK,4BAA4B,GAClC,MAAM,iDAAiD,CAAA;AACxD,OAAO,EACL,6BAA6B,EAC7B,KAAK,yCAAyC,GAC/C,MAAM,yDAAyD,CAAA;AAChE,OAAO,EACL,KAAK,eAAe,EACpB,8BAA8B,EAC9B,KAAK,0CAA0C,EAC/C,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,GACzB,MAAM,0DAA0D,CAAA;AACjE,OAAO,EACL,0BAA0B,EAC1B,KAAK,sCAAsC,GAC5C,MAAM,sDAAsD,CAAA;AAC7D,OAAO,KAAK,iBAAiB,MAAM,8CAA8C,CAAA;AAGjF,OAAO,EACL,KAAK,aAAa,EAClB,qBAAqB,EACrB,cAAc,EACd,SAAS,GACV,MAAM,gCAAgC,CAAA;AAGvC,OAAO,EACL,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,8CAA8C,CAAA;AAErD,OAAO,EACL,2BAA2B,EAC3B,KAAK,uCAAuC,EAC5C,KAAK,qBAAqB,GAC3B,MAAM,kDAAkD,CAAA;AACzD,OAAO,KAAK,YAAY,MAAM,oCAAoC,CAAA;AAMlE,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,GAC1B,MAAM,sCAAsC,CAAA;AAG7C,OAAO,EAAE,uBAAuB,EAAE,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAIjG,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,6BAA6B,GACnC,MAAM,6CAA6C,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAA;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,mDAAmD,CAAA;AAC7F,OAAO,EACL,mBAAmB,EACnB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,GAC7B,MAAM,6CAA6C,CAAA;AACpD,OAAO,EACL,6BAA6B,EAC7B,KAAK,oCAAoC,GAC1C,MAAM,uDAAuD,CAAA;AAC9D,OAAO,KAAK,eAAe,MAAM,0CAA0C,CAAA;AAC3E,OAAO,KAAK,0BAA0B,MAAM,sDAAsD,CAAA;AAOlG,OAAO,EACL,0BAA0B,EAC1B,KAAK,iCAAiC,GACvC,MAAM,iDAAiD,CAAA;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kDAAkD,CAAA;AAC5F,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,GAC9B,MAAM,gDAAgD,CAAA;AACvD,OAAO,KAAK,uBAAuB,MAAM,gDAAgD,CAAA;AAEzF,OAAO,EACL,kBAAkB,EAClB,KAAK,8BAA8B,GACpC,MAAM,6CAA6C,CAAA;AAIpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAA;AAEpF,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,yCAAyC,CAAA;AAGhD,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,EAC1B,KAAK,oBAAoB,EACzB,KAAK,mCAAmC,EACxC,KAAK,kCAAkC,GACxC,MAAM,uDAAuD,CAAA;AAC9D,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,GACnC,MAAM,uDAAuD,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAA;AAMrE,OAAO,EACL,0BAA0B,EAC1B,KAAK,sCAAsC,GAC5C,MAAM,6DAA6D,CAAA;AACpE,OAAO,EACL,uBAAuB,EACvB,KAAK,mCAAmC,GACzC,MAAM,0DAA0D,CAAA;AACjE,OAAO,EACL,0BAA0B,EAC1B,KAAK,sCAAsC,GAC5C,MAAM,6DAA6D,CAAA;AACpE,OAAO,EACL,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAC/B,KAAK,sCAAsC,GAC5C,MAAM,0CAA0C,CAAA;AACjD,OAAO,EAAE,gCAAgC,EAAE,MAAM,6CAA6C,CAAA;AAK9F,OAAO,EAAE,mBAAmB,EAAE,KAAK,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAK/F,OAAO,EACL,wBAAwB,EACxB,KAAK,oCAAoC,GAC1C,MAAM,6CAA6C,CAAA;AACpD,OAAO,EACL,sBAAsB,EACtB,KAAK,kCAAkC,GACxC,MAAM,2CAA2C,CAAA;AAClD,OAAO,EACL,oBAAoB,EACpB,KAAK,gCAAgC,GACtC,MAAM,yCAAyC,CAAA;AAChD,OAAO,EACL,yBAAyB,EACzB,KAAK,qCAAqC,GAC3C,MAAM,8CAA8C,CAAA;AACrD,OAAO,EACL,cAAc,EACd,aAAa,EACb,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,gBAAgB,GACtB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAA;AAC5D,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,YAAY,GACb,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACL,2BAA2B,EAC3B,KAAK,uCAAuC,EAC5C,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,GAC7B,MAAM,oDAAoD,CAAA;AAC3D,OAAO,EACL,aAAa,EACb,KAAK,yBAAyB,EAC9B,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,KAAK,+BAA+B,EACpC,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,4CAA4C,CAAA;AACnD,OAAO,EACL,2BAA2B,EAC3B,KAAK,uCAAuC,EAC5C,KAAK,mBAAmB,EACxB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,oDAAoD,CAAA;AAC3D,OAAO,EACL,yBAAyB,EACzB,KAAK,qCAAqC,EAC1C,KAAK,qBAAqB,GAC3B,MAAM,kDAAkD,CAAA;AACzD,OAAO,EACL,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACL,iBAAiB,EACjB,KAAK,6BAA6B,GACnC,MAAM,0CAA0C,CAAA;AACjD,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,GACzB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EACL,wBAAwB,EACxB,KAAK,oCAAoC,EACzC,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,iDAAiD,CAAA;AACxD,OAAO,KAAK,cAAc,MAAM,wCAAwC,CAAA;AACxE,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,WAAW,EACX,KAAK,kBAAkB,GACxB,MAAM,wCAAwC,CAAA;AAM/C,OAAO,EACL,6BAA6B,EAC7B,KAAK,yCAAyC,EAC9C,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,GACjC,MAAM,0DAA0D,CAAA;AACjE,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,2BAA2B,EAC3B,KAAK,uBAAuB,GAC7B,MAAM,kDAAkD,CAAA;AACzD,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EACL,yBAAyB,EACzB,eAAe,EACf,oBAAoB,EACpB,cAAc,GACf,MAAM,oCAAoC,CAAA;AAM3C,OAAO,EACL,iCAAiC,EACjC,KAAK,6CAA6C,EAClD,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,iCAAiC,GACvC,MAAM,kEAAkE,CAAA;AACzE,OAAO,EAAE,gCAAgC,EAAE,MAAM,yCAAyC,CAAA;AAC1F,OAAO,EACL,2BAA2B,EAC3B,KAAK,kCAAkC,GACxC,MAAM,oDAAoD,CAAA;AAC3D,OAAO,EACL,4BAA4B,EAC5B,KAAK,mCAAmC,GACzC,MAAM,sDAAsD,CAAA;AAC7D,OAAO,EACL,mCAAmC,EACnC,+BAA+B,EAC/B,KAAK,+CAA+C,GACrD,MAAM,qEAAqE,CAAA;AAC5E,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,KAAK,kCAAkC,EACvC,KAAK,uBAAuB,GAC7B,MAAM,qDAAqD,CAAA;AAC5D,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,8BAA8B,GACpC,MAAM,6CAA6C,CAAA;AACpD,OAAO,EACL,4BAA4B,EAC5B,kCAAkC,EAClC,KAAK,wCAAwC,GAC9C,MAAM,iEAAiE,CAAA;AACxE,OAAO,EACL,uBAAuB,EACvB,KAAK,mCAAmC,GACzC,MAAM,iDAAiD,CAAA;AACxD,OAAO,EAAE,8BAA8B,EAAE,MAAM,wDAAwD,CAAA;AACvG,OAAO,EACL,oBAAoB,EACpB,KAAK,gCAAgC,GACtC,MAAM,iDAAiD,CAAA;AAExD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EACL,sBAAsB,EACtB,KAAK,kCAAkC,EACvC,KAAK,eAAe,GACrB,MAAM,2CAA2C,CAAA"}
package/dist/index.js CHANGED
@@ -48,7 +48,7 @@ export { BugIntakeService, } from './modules/tasks/BugIntakeService.js';
48
48
  export { BugHuntService, BUG_HUNT_SCAN_LIMIT, } from './modules/tasks/BugHuntService.js';
49
49
  export { trackerWebhookPath, } from './modules/tasks/TaskConnectionService.js';
50
50
  export { TrackerWebhookService, } from './modules/tasks/TrackerWebhookService.js';
51
- export { issueEventMatchesIntake } from './modules/tasks/intakeMatch.logic.js';
51
+ export { judgeIssueEventForIntake } from './modules/tasks/intakeMatch.logic.js';
52
52
  export { githubIssuesWebhookAdapter, jiraWebhookAdapter, linearWebhookAdapter, } from './modules/tasks/webhook/adapters.js';
53
53
  export { MapTaskSourceRegistry, renderTaskContext, buildTaskExcerpt, } from './modules/tasks/tasks.logic.js';
54
54
  export * as tasksLogic from './modules/tasks/tasks.logic.js';
@@ -170,7 +170,7 @@ export { ApiKeyService, } from './modules/providers/ApiKeyService.js';
170
170
  export { PublicApiKeyService, scopeSatisfies, } from './modules/publicApi/PublicApiKeyService.js';
171
171
  export { PersonalSubscriptionService, DEFAULT_ACTIVATION_TTL_MS, DEFAULT_RENEW_WARNING_MS, } from './modules/providers/PersonalSubscriptionService.js';
172
172
  export { LocalModelEndpointService, } from './modules/providers/LocalModelEndpointService.js';
173
- export { fetchLocalRunner, localRunnerUrlError } from './modules/providers/localModelUrl.js';
173
+ export { fetchLocalRunner, localRunnerUrlRefusal, runnerRequestUrl, } from './modules/providers/localModelUrl.js';
174
174
  export { UserSecretService, } from './modules/providers/UserSecretService.js';
175
175
  export { UserSecretKindRegistry, defaultUserSecretKindRegistry, githubPatUserSecretKind, } from './modules/providers/userSecretKinds.js';
176
176
  export { describeGitHubPatScope, summarizeGitHubPatScope, } from './modules/providers/githubPatScope.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { Clock, LocalModelEndpointRepository, SecretCipher } from '@cat-factory/kernel';
2
2
  import type { LocalModelEndpoint, LocalModelEndpointTestResult, LocalRunner, TestLocalModelEndpointInput, UpsertLocalModelEndpointInput } from '@cat-factory/contracts';
3
+ import { type LocalRunnerUrlRefusal } from './localModelUrl.js';
3
4
  export interface LocalModelEndpointServiceDependencies {
4
5
  localModelEndpointRepository: LocalModelEndpointRepository;
5
6
  /** System encryption layer (master key) for the optional bearer key at rest. */
@@ -7,6 +8,13 @@ export interface LocalModelEndpointServiceDependencies {
7
8
  clock: Clock;
8
9
  /** Injected for tests; defaults to the global fetch. */
9
10
  fetch?: typeof fetch;
11
+ /**
12
+ * Permit private-LAN runner hosts (RFC1918 / ULA / mDNS `.local`) in addition to
13
+ * loopback. OFF by default: on a shared multi-tenant deployment the LAN allow-list is
14
+ * an internal-network SSRF grant, so it is an operator opt-in
15
+ * (`LOCAL_MODELS_ALLOW_LAN=true`; single-tenant local mode defaults it on).
16
+ */
17
+ allowPrivateLanHosts?: boolean;
10
18
  }
11
19
  /** A resolved endpoint for the run-time path: base URL + the decrypted optional key. */
12
20
  export interface ResolvedLocalEndpoint {
@@ -16,9 +24,18 @@ export interface ResolvedLocalEndpoint {
16
24
  }
17
25
  export declare class LocalModelEndpointService {
18
26
  private readonly deps;
27
+ /** The deployment's runner-host policy, normalised once from the deps flag. */
28
+ private readonly urlPolicy;
19
29
  constructor(deps: LocalModelEndpointServiceDependencies);
20
- /** Every endpoint the user has configured (key-free wire shape). */
30
+ /**
31
+ * Every endpoint the user has configured (key-free wire shape), each carrying whether
32
+ * the deployment's CURRENT policy still permits its URL. A row can pre-date a policy
33
+ * narrowing, and an endpoint whose models are withheld from the picker has to say so
34
+ * here or it reads as healthy while every run against it is refused.
35
+ */
21
36
  list(userId: string): Promise<LocalModelEndpoint[]>;
37
+ /** The policy verdict on one stored base URL: the reason it is unusable, or null. */
38
+ private urlRefusalFor;
22
39
  /** Create or replace the user's endpoint for a runner. */
23
40
  upsert(userId: string, input: UpsertLocalModelEndpointInput): Promise<LocalModelEndpoint>;
24
41
  /** Remove the user's endpoint for a runner. */
@@ -42,6 +59,24 @@ export declare class LocalModelEndpointService {
42
59
  * optional key). Used by the inline model provider to register the user's runners.
43
60
  */
44
61
  listResolved(userId: string): Promise<ResolvedLocalEndpoint[]>;
62
+ /**
63
+ * Fetch a runner URL under this deployment's host policy, re-validating the allow-list
64
+ * on every redirect hop. The ONE transport every run-time forward uses (the LLM proxy,
65
+ * the inline model provider, the probe below), so a row persisted under a wider policy
66
+ * is refused loudly at fetch time after an operator narrows it, never silently honoured.
67
+ */
68
+ fetchRunner(rawUrl: string, init: RequestInit): Promise<Response>;
69
+ /**
70
+ * Compose one runner ENDPOINT url (`/models`, `/chat/completions`) from a stored base URL
71
+ * under this deployment's policy. The seam every server-side caller uses instead of
72
+ * appending to `resolved.baseUrl`, so the policy stays here rather than being re-derived
73
+ * (and re-derived differently) at each forward.
74
+ */
75
+ endpointUrl(baseUrl: string, suffix: `/${string}`): {
76
+ url: string;
77
+ } | {
78
+ refusal: LocalRunnerUrlRefusal;
79
+ };
45
80
  /**
46
81
  * Probe a runner's OpenAI-compatible `/models` endpoint server-side, returning
47
82
  * reachability + the model ids it serves. Never throws — failures are reported as
@@ -1 +1 @@
1
- {"version":3,"file":"LocalModelEndpointService.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/LocalModelEndpointService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EAEL,4BAA4B,EAC5B,YAAY,EACb,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EACV,kBAAkB,EAClB,4BAA4B,EAC5B,WAAW,EACX,2BAA2B,EAC3B,6BAA6B,EAC9B,MAAM,wBAAwB,CAAA;AAe/B,MAAM,WAAW,qCAAqC;IACpD,4BAA4B,EAAE,4BAA4B,CAAA;IAC1D,gFAAgF;IAChF,YAAY,EAAE,YAAY,CAAA;IAC1B,KAAK,EAAE,KAAK,CAAA;IACZ,wDAAwD;IACxD,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;CACrB;AAED,wFAAwF;AACxF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,WAAW,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED,qBAAa,yBAAyB;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,qCAAqC,EAAI;IAE5E,oEAAoE;IAC9D,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAGxD;IAED,0DAA0D;IACpD,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,6BAA6B,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA8B9F;IAED,+CAA+C;IACzC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjE;IAED;;;OAGG;IACG,eAAe,CACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,QAAQ,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC,CAKvE;IAED;;;OAGG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAUrF;IAED;;;OAGG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAUnE;IAED;;;;OAIG;IACG,cAAc,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,4BAA4B,CAAC,CA4B9F;CACF"}
1
+ {"version":3,"file":"LocalModelEndpointService.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/LocalModelEndpointService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EAEL,4BAA4B,EAC5B,YAAY,EACb,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EACV,kBAAkB,EAClB,4BAA4B,EAC5B,WAAW,EAEX,2BAA2B,EAC3B,6BAA6B,EAC9B,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAGL,KAAK,qBAAqB,EAG3B,MAAM,oBAAoB,CAAA;AAa3B,MAAM,WAAW,qCAAqC;IACpD,4BAA4B,EAAE,4BAA4B,CAAA;IAC1D,gFAAgF;IAChF,YAAY,EAAE,YAAY,CAAA;IAC1B,KAAK,EAAE,KAAK,CAAA;IACZ,wDAAwD;IACxD,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;IACpB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED,wFAAwF;AACxF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,WAAW,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED,qBAAa,yBAAyB;IAIxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHjC,+EAA+E;IAC/E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAEhD,YAA6B,IAAI,EAAE,qCAAqC,EAEvE;IAED;;;;;OAKG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAGxD;IAED,qFAAqF;IACrF,OAAO,CAAC,aAAa;IAIrB,0DAA0D;IACpD,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,6BAA6B,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgC9F;IAED,+CAA+C;IACzC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjE;IAED;;;OAGG;IACG,eAAe,CACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,QAAQ,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC,CAYvE;IAED;;;OAGG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAUrF;IAED;;;OAGG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAUnE;IAED;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAEhE;IAED;;;;;OAKG;IACH,WAAW,CACT,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,IAAI,MAAM,EAAE,GACnB;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,qBAAqB,CAAA;KAAE,CAEtD;IAED;;;;OAIG;IACG,cAAc,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,4BAA4B,CAAC,CA+B9F;CACF"}
@@ -1,24 +1,37 @@
1
1
  import { getErrorMessage, ValidationError } from '@cat-factory/kernel';
2
2
  import { LOCAL_RUNNER_LABELS } from '@cat-factory/contracts';
3
- import { fetchLocalRunner, localRunnerUrlError } from './localModelUrl.js';
3
+ import { fetchLocalRunner, localRunnerUrlRefusal, runnerRequestUrl, } from './localModelUrl.js';
4
4
  export class LocalModelEndpointService {
5
5
  deps;
6
+ /** The deployment's runner-host policy, normalised once from the deps flag. */
7
+ urlPolicy;
6
8
  constructor(deps) {
7
9
  this.deps = deps;
10
+ this.urlPolicy = { allowPrivateLan: deps.allowPrivateLanHosts ?? false };
8
11
  }
9
- /** Every endpoint the user has configured (key-free wire shape). */
12
+ /**
13
+ * Every endpoint the user has configured (key-free wire shape), each carrying whether
14
+ * the deployment's CURRENT policy still permits its URL. A row can pre-date a policy
15
+ * narrowing, and an endpoint whose models are withheld from the picker has to say so
16
+ * here or it reads as healthy while every run against it is refused.
17
+ */
10
18
  async list(userId) {
11
19
  const rows = await this.deps.localModelEndpointRepository.listByUser(userId);
12
- return rows.map((r) => toWire(r));
20
+ return rows.map((r) => toWire(r, this.urlRefusalFor(r.baseUrl)));
21
+ }
22
+ /** The policy verdict on one stored base URL: the reason it is unusable, or null. */
23
+ urlRefusalFor(baseUrl) {
24
+ return localRunnerUrlRefusal(baseUrl, this.urlPolicy)?.reason ?? null;
13
25
  }
14
26
  /** Create or replace the user's endpoint for a runner. */
15
27
  async upsert(userId, input) {
16
28
  // SSRF guard: the stored base URL is later forwarded to server-side (the LLM proxy +
17
- // inline provider resolve it by the run initiator), so reject a non-local host here at
18
- // the write boundary — the run-time paths then trust the persisted URL.
19
- const urlError = localRunnerUrlError(input.baseUrl);
29
+ // inline provider resolve it by the run initiator), so reject a host the deployment's
30
+ // policy denies here at the write boundary. The run-time paths re-validate too (via
31
+ // `fetchRunner`), because a row can pre-date a policy narrowing.
32
+ const urlError = localRunnerUrlRefusal(input.baseUrl, this.urlPolicy);
20
33
  if (urlError)
21
- throw new ValidationError(urlError);
34
+ throw new ValidationError(urlError.message, { reason: urlError.reason });
22
35
  const now = this.deps.clock.now();
23
36
  const existing = await this.deps.localModelEndpointRepository.getByUserProvider(userId, input.provider);
24
37
  // An omitted apiKey keeps the stored one; an explicit empty string clears it.
@@ -38,7 +51,8 @@ export class LocalModelEndpointService {
38
51
  updatedAt: now,
39
52
  };
40
53
  await this.deps.localModelEndpointRepository.upsert(record);
41
- return toWire(record);
54
+ // Just validated above, so the stored row is permitted by construction.
55
+ return toWire(record, null);
42
56
  }
43
57
  /** Remove the user's endpoint for a runner. */
44
58
  async remove(userId, provider) {
@@ -50,9 +64,14 @@ export class LocalModelEndpointService {
50
64
  */
51
65
  async capabilitiesFor(userId) {
52
66
  const rows = await this.deps.localModelEndpointRepository.listByUser(userId);
53
- return rows
67
+ return (rows
54
68
  .filter((r) => r.models.length > 0)
55
- .map((r) => ({ provider: r.provider, label: r.label, models: r.models }));
69
+ // A row the CURRENT policy denies is not offered: admission would price its models as
70
+ // free, dispatch a container, and only then die at the first forward. Withholding it
71
+ // moves the failure to the settings panel (which reports `urlBlockedReason`), where
72
+ // the thing that is actually wrong can be fixed.
73
+ .filter((r) => this.urlRefusalFor(r.baseUrl) === null)
74
+ .map((r) => ({ provider: r.provider, label: r.label, models: r.models })));
56
75
  }
57
76
  /**
58
77
  * Resolve a user's endpoint for run-time forwarding: base URL + decrypted optional key.
@@ -82,26 +101,50 @@ export class LocalModelEndpointService {
82
101
  }
83
102
  return out;
84
103
  }
104
+ /**
105
+ * Fetch a runner URL under this deployment's host policy, re-validating the allow-list
106
+ * on every redirect hop. The ONE transport every run-time forward uses (the LLM proxy,
107
+ * the inline model provider, the probe below), so a row persisted under a wider policy
108
+ * is refused loudly at fetch time after an operator narrows it, never silently honoured.
109
+ */
110
+ fetchRunner(rawUrl, init) {
111
+ return fetchLocalRunner(rawUrl, init, this.deps.fetch ?? fetch, this.urlPolicy);
112
+ }
113
+ /**
114
+ * Compose one runner ENDPOINT url (`/models`, `/chat/completions`) from a stored base URL
115
+ * under this deployment's policy. The seam every server-side caller uses instead of
116
+ * appending to `resolved.baseUrl`, so the policy stays here rather than being re-derived
117
+ * (and re-derived differently) at each forward.
118
+ */
119
+ endpointUrl(baseUrl, suffix) {
120
+ return runnerRequestUrl(baseUrl, suffix, this.urlPolicy);
121
+ }
85
122
  /**
86
123
  * Probe a runner's OpenAI-compatible `/models` endpoint server-side, returning
87
124
  * reachability + the model ids it serves. Never throws — failures are reported as
88
125
  * `{ reachable: false, error }` so the UI can surface them.
89
126
  */
90
127
  async testConnection(input) {
91
- // SSRF guard: this probe forwards to a user-supplied URL server-side, so refuse a
92
- // non-local host before issuing the fetch (same allow-list as `upsert`).
93
- const urlError = localRunnerUrlError(input.baseUrl);
94
- if (urlError)
95
- return { reachable: false, models: [], error: urlError };
96
- const doFetch = this.deps.fetch ?? fetch;
97
- const url = `${input.baseUrl.replace(/\/+$/, '')}/models`;
128
+ // SSRF guard: this probe forwards to a user-supplied URL server-side, so refuse a host
129
+ // the policy denies before issuing the fetch (same allow-list as `upsert`). Composed
130
+ // rather than concatenated, so the `/models` suffix cannot be discarded by the base.
131
+ const composed = runnerRequestUrl(input.baseUrl, '/models', this.urlPolicy);
132
+ if ('refusal' in composed) {
133
+ return {
134
+ reachable: false,
135
+ models: [],
136
+ error: composed.refusal.message,
137
+ errorReason: composed.refusal.reason,
138
+ };
139
+ }
140
+ const url = composed.url;
98
141
  try {
99
142
  const headers = {};
100
143
  if (input.apiKey)
101
144
  headers.authorization = `Bearer ${input.apiKey}`;
102
145
  // Re-validate on every redirect hop: a reachable runner that 302s to a denied
103
146
  // host (e.g. the cloud-metadata endpoint) must not be followed.
104
- const res = await fetchLocalRunner(url, { headers, signal: AbortSignal.timeout(8000) }, doFetch);
147
+ const res = await this.fetchRunner(url, { headers, signal: AbortSignal.timeout(8000) });
105
148
  if (!res.ok) {
106
149
  return { reachable: false, models: [], error: `Runner returned HTTP ${res.status}` };
107
150
  }
@@ -116,13 +159,14 @@ export class LocalModelEndpointService {
116
159
  }
117
160
  }
118
161
  }
119
- function toWire(record) {
162
+ function toWire(record, urlBlockedReason) {
120
163
  return {
121
164
  provider: record.provider,
122
165
  label: record.label,
123
166
  baseUrl: record.baseUrl,
124
167
  hasApiKey: record.apiKeyCipher !== null,
125
168
  models: record.models,
169
+ urlBlockedReason,
126
170
  createdAt: record.createdAt,
127
171
  updatedAt: record.updatedAt,
128
172
  };
@@ -1 +1 @@
1
- {"version":3,"file":"LocalModelEndpointService.js","sourceRoot":"","sources":["../../../src/modules/providers/LocalModelEndpointService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LocalModelEndpointService.js","sourceRoot":"","sources":["../../../src/modules/providers/LocalModelEndpointService.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAStE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EACL,gBAAgB,EAGhB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,oBAAoB,CAAA;AAoC3B,MAAM,OAAO,yBAAyB;IAIP,IAAI;IAHjC,+EAA+E;IAC9D,SAAS,CAAsB;IAEhD,YAA6B,IAA2C;oBAA3C,IAAI;QAC/B,IAAI,CAAC,SAAS,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,oBAAoB,IAAI,KAAK,EAAE,CAAA;IAC1E,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,MAAc;QACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QAC5E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAClE,CAAC;IAED,qFAAqF;IAC7E,aAAa,CAAC,OAAe;QACnC,OAAO,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,IAAI,CAAA;IACvE,CAAC;IAED,0DAA0D;IAC1D,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,KAAoC;QAC/D,qFAAqF;QACrF,sFAAsF;QACtF,oFAAoF;QACpF,iEAAiE;QACjE,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QACrE,IAAI,QAAQ;YAAE,MAAM,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;QACtF,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;QACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,iBAAiB,CAC7E,MAAM,EACN,KAAK,CAAC,QAAQ,CACf,CAAA;QACD,8EAA8E;QAC9E,MAAM,YAAY,GAChB,KAAK,CAAC,MAAM,KAAK,SAAS;YACxB,CAAC,CAAC,CAAC,QAAQ,EAAE,YAAY,IAAI,IAAI,CAAC;YAClC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;gBACvB,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;gBACpD,CAAC,CAAC,IAAI,CAAA;QACZ,MAAM,MAAM,GAA6B;YACvC,MAAM;YACN,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC;YACjE,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,YAAY;YACZ,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YAC5B,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,GAAG;YACrC,SAAS,EAAE,GAAG;SACf,CAAA;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC3D,wEAAwE;QACxE,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC7B,CAAC;IAED,+CAA+C;IAC/C,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,QAAqB;QAChD,MAAM,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACvE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe,CACnB,MAAc;QAEd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QAC5E,OAAO,CACL,IAAI;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YACnC,sFAAsF;YACtF,qFAAqF;YACrF,oFAAoF;YACpF,iDAAiD;aAChD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;aACrD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAC5E,CAAA;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,QAAgB;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,iBAAiB,CAC3E,MAAM,EACN,QAAuB,CACxB,CAAA;QACD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAA;QACxB,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY;YAChC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;YAC3D,CAAC,CAAC,IAAI,CAAA;QACR,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAA;IACvE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,MAAc;QAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QAC5E,MAAM,GAAG,GAA4B,EAAE,CAAA;QACvC,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY;gBAChC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;gBAC3D,CAAC,CAAC,IAAI,CAAA;YACR,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAA;QAC1E,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,MAAc,EAAE,IAAiB;QAC3C,OAAO,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IACjF,CAAC;IAED;;;;;OAKG;IACH,WAAW,CACT,OAAe,EACf,MAAoB;QAEpB,OAAO,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IAC1D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,KAAkC;QACrD,uFAAuF;QACvF,qFAAqF;QACrF,qFAAqF;QACrF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAC3E,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;YAC1B,OAAO;gBACL,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO;gBAC/B,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM;aACrC,CAAA;QACH,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAA;QACxB,IAAI,CAAC;YACH,MAAM,OAAO,GAA2B,EAAE,CAAA;YAC1C,IAAI,KAAK,CAAC,MAAM;gBAAE,OAAO,CAAC,aAAa,GAAG,UAAU,KAAK,CAAC,MAAM,EAAE,CAAA;YAClE,8EAA8E;YAC9E,gEAAgE;YAChE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACvF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,wBAAwB,GAAG,CAAC,MAAM,EAAE,EAAE,CAAA;YACtF,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAkC,CAAA;YAChE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;gBACrC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;gBAC3D,CAAC,CAAC,EAAE,CAAA;YACN,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CAAA;QACtE,CAAC;IACH,CAAC;CACF;AAED,SAAS,MAAM,CACb,MAAgC,EAChC,gBAA6C;IAE7C,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,MAAM,CAAC,YAAY,KAAK,IAAI;QACvC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,gBAAgB;QAChB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAA;AACH,CAAC;AAED,SAAS,MAAM,CAAC,MAAgB;IAC9B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAClE,CAAC"}
@@ -1,20 +1,58 @@
1
+ import type { LocalRunnerUrlReason } from '@cat-factory/contracts';
2
+ /** A refused runner URL: the machine-readable cause plus the operator-facing detail. */
3
+ export interface LocalRunnerUrlRefusal {
4
+ reason: LocalRunnerUrlReason;
5
+ message: string;
6
+ }
7
+ /** The host policy a deployment applies to local-runner URLs. */
8
+ export interface LocalRunnerUrlPolicy {
9
+ /**
10
+ * Permit RFC1918/ULA/mDNS private-LAN hosts in addition to loopback. OFF by default,
11
+ * so an un-threaded call site fails safe: only an operator who understands the
12
+ * internal-network exposure turns it on (`LOCAL_MODELS_ALLOW_LAN=true`; local mode
13
+ * defaults it on, being single-tenant by definition).
14
+ */
15
+ allowPrivateLan?: boolean;
16
+ }
1
17
  /**
2
- * Validate a local-runner base URL. Returns a human-readable error string when the URL
3
- * is malformed or points at a non-local host, or `null` when it's acceptable. Used by
4
- * the service at the write boundary and by the "Test connection" probe.
18
+ * Validate a local-runner base URL under `policy`. Returns the refusal (machine-readable
19
+ * `reason` + operator-facing `message`) when the URL is malformed, carries a
20
+ * request-shaping suffix, or points at a host the policy denies; `null` when acceptable.
21
+ * Used by the service at the write boundary, by the "Test connection" probe, by
22
+ * {@link runnerRequestUrl} and per redirect hop by {@link fetchLocalRunner}.
5
23
  */
6
- export declare function localRunnerUrlError(rawUrl: string): string | null;
24
+ export declare function localRunnerUrlRefusal(rawUrl: string, policy?: LocalRunnerUrlPolicy): LocalRunnerUrlRefusal | null;
25
+ /**
26
+ * Compose the URL of one runner ENDPOINT (`/models`, `/chat/completions`) from a stored
27
+ * base URL, validating both ends under `policy`.
28
+ *
29
+ * Every server-side forward goes through here rather than concatenating, because the
30
+ * safety of the two forwards rests on the endpoint path being ours, and a plain template
31
+ * string cannot state that: whatever the base contributes wins whenever it can shape the
32
+ * request (see the query/fragment refusal above). So the composed URL is re-validated and
33
+ * its pathname must still END with the suffix we asked for. A pre-existing row that would
34
+ * defeat the suffix is therefore refused HERE too, not only at the write boundary it was
35
+ * written before.
36
+ */
37
+ export declare function runnerRequestUrl(baseUrl: string, suffix: `/${string}`, policy?: LocalRunnerUrlPolicy): {
38
+ url: string;
39
+ } | {
40
+ refusal: LocalRunnerUrlRefusal;
41
+ };
7
42
  /**
8
43
  * Fetch a local-runner URL, re-validating the SSRF allow-list on EVERY redirect hop.
9
44
  *
10
- * The allow-list permits loopback/LAN hosts, but a permitted private runner can still
11
- * `302` to a denied host — most dangerously the cloud-metadata endpoint
12
- * (169.254.169.254) — and the platform `fetch` would follow it silently. So we drive
45
+ * The allow-list permits loopback (and, on opt-in, LAN) hosts, but a permitted runner can
46
+ * still `302` to a denied host, most dangerously the cloud-metadata endpoint
47
+ * (169.254.169.254), and the platform `fetch` would follow it silently. So we drive
13
48
  * redirects by hand (`redirect: 'manual'`) and run {@link localRunnerUrlError} against
14
49
  * each `Location` before following it, mirroring the environment provider's `safeFetch`.
15
50
  * Both server-side callers (the "Test connection" probe and the run-time LLM proxy
16
- * forward) use this instead of a bare `fetch`. Throws when a hop fails validation or the
51
+ * forward) use this instead of a bare `fetch`, through
52
+ * `LocalModelEndpointService.fetchRunner`, which binds the deployment's policy, so a row
53
+ * persisted while LAN access was enabled is refused at fetch time after an operator
54
+ * narrows the policy, not silently honoured. Throws when a hop fails validation or the
17
55
  * redirect chain is too long.
18
56
  */
19
- export declare function fetchLocalRunner(rawUrl: string, init: RequestInit, doFetch?: typeof fetch): Promise<Response>;
57
+ export declare function fetchLocalRunner(rawUrl: string, init: RequestInit, doFetch?: typeof fetch, policy?: LocalRunnerUrlPolicy): Promise<Response>;
20
58
  //# sourceMappingURL=localModelUrl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"localModelUrl.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/localModelUrl.ts"],"names":[],"mappings":"AAoDA;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsBjE;AAKD;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,QAAQ,CAAC,CAcnB"}
1
+ {"version":3,"file":"localModelUrl.d.ts","sourceRoot":"","sources":["../../../src/modules/providers/localModelUrl.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAGlE,wFAAwF;AACxF,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,oBAAoB,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,iEAAiE;AACjE,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AA+DD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,oBAAoB,GAC5B,qBAAqB,GAAG,IAAI,CA2D9B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,IAAI,MAAM,EAAE,EACpB,MAAM,CAAC,EAAE,oBAAoB,GAC5B;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,qBAAqB,CAAA;CAAE,CAetD;AAKD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE,OAAO,KAAa,EAC7B,MAAM,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,QAAQ,CAAC,CAcnB"}
@@ -2,29 +2,45 @@
2
2
  // SSRF guard for local-runner base URLs. A runner lives on the user's OWN machine
3
3
  // (or LAN), so we forward requests to a user-supplied base URL server-side (both the
4
4
  // "Test connection" probe and the run-time LLM proxy). The usual "block private IPs"
5
- // mitigation is backwards here — loopback/LAN is exactly the intended target — so
6
- // instead we ALLOW only loopback + RFC1918/ULA private hosts and reject everything
7
- // else. This keeps the feature working on a single-tenant Node/local deployment (the
8
- // server shares the LAN with the runner) while denying a tenant on the shared
9
- // Cloudflare facade the ability to probe arbitrary public hosts or the link-local
10
- // cloud-metadata endpoint (169.254.169.254 / fe80::). Public/remote runners are not
11
- // supported by design.
5
+ // mitigation is backwards here: loopback is exactly the intended target, so we ALLOW
6
+ // only loopback hosts and reject everything else. Private-LAN reach (RFC1918 / ULA /
7
+ // mDNS `.local`) is an OPERATOR OPT-IN (`LOCAL_MODELS_ALLOW_LAN=true`), not the
8
+ // baseline: on a multi-tenant Node deployment the LAN allow-list is itself an
9
+ // internal-network SSRF grant (admin panels, Consul/etcd, other tenants' services),
10
+ // no redirect trick needed. Single-tenant local mode defaults the opt-in ON, since a
11
+ // developer's own LAN (an LM Studio box, a homelab Ollama host) is the intended
12
+ // reach there. The cloud-metadata endpoint (169.254.169.254 / fe80::) is denied under
13
+ // every policy. Public/remote runners are not supported by design.
12
14
  // ---------------------------------------------------------------------------
13
15
  import { decodeIpv4, isCloudMetadataHost, isPrivateV4 } from '@cat-factory/kernel';
14
- /** Whether a hostname (no port) is a loopback or RFC1918/ULA private host we forward to. */
15
- function isLoopbackOrPrivateHost(host) {
16
+ /** Classify a decoded IPv4 under the policy: loopback always, RFC1918 only on opt-in. */
17
+ function isAllowedRunnerV4(v4, allowPrivateLan) {
18
+ if (v4[0] === 127)
19
+ return true; // loopback 127/8
20
+ // `isPrivateV4` accepts 10/8, 172.16/12, 192.168/16, plus 0.* and 169.254.* which we
21
+ // exclude (0.0.0.0/8 unspecified; the metadata range is denied before we get here).
22
+ return allowPrivateLan && v4[0] !== 0 && isPrivateV4(v4);
23
+ }
24
+ /** Whether a hostname (no port) is a runner host the policy lets us forward to. */
25
+ function isAllowedRunnerHost(host, allowPrivateLan) {
16
26
  const h = host.toLowerCase().replace(/^\[/, '').replace(/\]$/, '');
17
27
  if (h === '')
18
28
  return false;
19
29
  // Cloud-metadata / link-local endpoints (169.254.0.0/16, metadata.google.internal,
20
30
  // fd00:ec2::254, …) are the primary SSRF target. Deny them FIRST — some (the whole
21
- // 169.254/16 range) would otherwise look "private" — across every obfuscated encoding.
31
+ // 169.254/16 range) would otherwise look "private", across every obfuscated encoding.
22
32
  if (isCloudMetadataHost(h))
23
33
  return false;
24
- if (h === 'localhost' || h.endsWith('.localhost'))
34
+ // Exactly `localhost`, never a `*.localhost` subdomain: that suffix is not delegated in
35
+ // the public root, but the NAME is still handed to the deployment's resolver, and in a
36
+ // container with search domains (`ndots`) a 2-label name like `evil.com.localhost` is tried
37
+ // with those suffixes first, so a wildcard answer sends the fetch off-loopback. It is also
38
+ // the only allowed form that is not a literal, hence the only one with a DNS-rebinding
39
+ // window. No default needs it (`LOCAL_RUNNER_DEFAULTS` are all `localhost`).
40
+ if (h === 'localhost')
25
41
  return true;
26
- // mDNS `.local` names resolve only on the LAN — acceptable for a same-network runner.
27
- if (h.endsWith('.local'))
42
+ // mDNS `.local` names resolve only on the LAN: a LAN-tier grant, not a loopback one.
43
+ if (allowPrivateLan && h.endsWith('.local'))
28
44
  return true;
29
45
  // IPv6 literals (URL.hostname keeps them bracketless here → they contain a colon).
30
46
  // Gating the ULA prefix test behind this colon check is what stops a registrable DNS
@@ -32,72 +48,150 @@ function isLoopbackOrPrivateHost(host) {
32
48
  if (h.includes(':')) {
33
49
  if (h === '::1')
34
50
  return true; // loopback
35
- if (h.startsWith('fc') || h.startsWith('fd'))
51
+ if (allowPrivateLan && (h.startsWith('fc') || h.startsWith('fd')))
36
52
  return true; // ULA fc00::/7
37
53
  // IPv4-mapped IPv6 (e.g. `::ffff:10.0.0.1`) → classify by the embedded IPv4.
38
54
  const mapped = decodeIpv4(h);
39
55
  if (mapped)
40
- return mapped[0] !== 0 && isPrivateV4(mapped);
56
+ return isAllowedRunnerV4(mapped, allowPrivateLan);
41
57
  // fe80::/10 (link-local), :: (unspecified), and global addresses → denied.
42
58
  return false;
43
59
  }
44
60
  // IPv4 in any form the WHATWG URL parser may leave us (it canonicalises hex/octal/
45
61
  // integer hosts to dotted-decimal before we see them; `decodeIpv4` covers the rest
46
- // defensively). `isPrivateV4` accepts 127/8, 10/8, 172.16/12, 192.168/16 — plus 0.*
47
- // and 169.254.* which we exclude (0.0.0.0/8 unspecified; metadata handled above).
62
+ // defensively).
48
63
  const v4 = decodeIpv4(h);
49
64
  if (v4)
50
- return v4[0] !== 0 && isPrivateV4(v4);
65
+ return isAllowedRunnerV4(v4, allowPrivateLan);
51
66
  // Public hostname / anything unrecognised → denied.
52
67
  return false;
53
68
  }
69
+ /** Whether the URL as WRITTEN carries a `.` or `..` path segment. */
70
+ function hasDotSegment(rawUrl) {
71
+ const afterScheme = rawUrl.slice(rawUrl.indexOf('://') + 3);
72
+ const slash = afterScheme.indexOf('/');
73
+ if (slash < 0)
74
+ return false;
75
+ return /(^|\/)\.\.?(\/|$)/.test(afterScheme.slice(slash));
76
+ }
54
77
  /**
55
- * Validate a local-runner base URL. Returns a human-readable error string when the URL
56
- * is malformed or points at a non-local host, or `null` when it's acceptable. Used by
57
- * the service at the write boundary and by the "Test connection" probe.
78
+ * Validate a local-runner base URL under `policy`. Returns the refusal (machine-readable
79
+ * `reason` + operator-facing `message`) when the URL is malformed, carries a
80
+ * request-shaping suffix, or points at a host the policy denies; `null` when acceptable.
81
+ * Used by the service at the write boundary, by the "Test connection" probe, by
82
+ * {@link runnerRequestUrl} and per redirect hop by {@link fetchLocalRunner}.
58
83
  */
59
- export function localRunnerUrlError(rawUrl) {
84
+ export function localRunnerUrlRefusal(rawUrl, policy) {
85
+ const allowPrivateLan = policy?.allowPrivateLan ?? false;
60
86
  let url;
61
87
  try {
62
88
  url = new URL(rawUrl);
63
89
  }
64
90
  catch {
65
- return 'Enter a valid URL, e.g. http://localhost:11434/v1.';
91
+ return { reason: 'invalid_url', message: 'Enter a valid URL, e.g. http://localhost:11434/v1.' };
66
92
  }
67
93
  if (url.protocol !== 'http:' && url.protocol !== 'https:') {
68
- return 'A runner URL must use http or https.';
94
+ return { reason: 'scheme_not_allowed', message: 'A runner URL must use http or https.' };
69
95
  }
70
96
  // Embedded credentials (`user:pass@host`) have no legitimate use for a local runner
71
97
  // and are a classic way to smuggle an unexpected authority past a naive check.
72
98
  if (url.username || url.password) {
73
- return 'A runner URL must not contain credentials.';
99
+ return {
100
+ reason: 'credentials_not_allowed',
101
+ message: 'A runner URL must not contain credentials.',
102
+ };
103
+ }
104
+ // A BASE url is an origin + a path prefix and nothing else. A query string or fragment
105
+ // makes the endpoint suffix we append (`/models`, `/chat/completions`) inert or inert-ish
106
+ // (`…/_search?q=x#` + `/models` requests `/_search?q=x`), which would turn the two
107
+ // fixed-path forwards into an arbitrary-path request against a loopback service. Dot
108
+ // segments are refused for the same reason: they let a stored prefix walk elsewhere.
109
+ if (url.search || url.hash) {
110
+ return {
111
+ reason: 'query_or_fragment_not_allowed',
112
+ message: 'A runner URL must be a plain base URL: no query string and no "#" fragment ' +
113
+ '(the platform appends the endpoint path itself).',
114
+ };
115
+ }
116
+ // Dot segments are checked on the RAW string, because the URL parser resolves them away
117
+ // before `pathname` is readable. They cannot defeat the appended suffix (it stays last),
118
+ // so this is honesty rather than containment: a stored prefix that silently relocates the
119
+ // request is not the prefix the operator typed.
120
+ if (hasDotSegment(rawUrl)) {
121
+ return {
122
+ reason: 'query_or_fragment_not_allowed',
123
+ message: 'A runner URL must not contain "." or ".." path segments.',
124
+ };
74
125
  }
75
- if (!isLoopbackOrPrivateHost(url.hostname)) {
76
- return ('A local runner must live on your own machine or LAN (localhost, *.local, or a ' +
77
- 'private 10./172.16–31./192.168. address). Public or remote hosts are not allowed.');
126
+ if (!isAllowedRunnerHost(url.hostname, allowPrivateLan)) {
127
+ return allowPrivateLan
128
+ ? {
129
+ reason: 'host_not_local',
130
+ message: 'A local runner must live on your own machine or LAN (localhost, *.local, or a ' +
131
+ 'private 10./172.16-31./192.168. address). Public or remote hosts are not allowed.',
132
+ }
133
+ : {
134
+ reason: 'host_not_loopback',
135
+ message: 'A local runner must live on this machine (localhost, 127.x.x.x, or [::1]). ' +
136
+ 'Private-LAN runner hosts are disabled on this deployment; an operator can allow ' +
137
+ 'them with LOCAL_MODELS_ALLOW_LAN=true.',
138
+ };
78
139
  }
79
140
  return null;
80
141
  }
142
+ /**
143
+ * Compose the URL of one runner ENDPOINT (`/models`, `/chat/completions`) from a stored
144
+ * base URL, validating both ends under `policy`.
145
+ *
146
+ * Every server-side forward goes through here rather than concatenating, because the
147
+ * safety of the two forwards rests on the endpoint path being ours, and a plain template
148
+ * string cannot state that: whatever the base contributes wins whenever it can shape the
149
+ * request (see the query/fragment refusal above). So the composed URL is re-validated and
150
+ * its pathname must still END with the suffix we asked for. A pre-existing row that would
151
+ * defeat the suffix is therefore refused HERE too, not only at the write boundary it was
152
+ * written before.
153
+ */
154
+ export function runnerRequestUrl(baseUrl, suffix, policy) {
155
+ const refusal = localRunnerUrlRefusal(baseUrl, policy);
156
+ if (refusal)
157
+ return { refusal };
158
+ const composed = `${baseUrl.replace(/\/+$/, '')}${suffix}`;
159
+ const composedRefusal = localRunnerUrlRefusal(composed, policy);
160
+ if (composedRefusal)
161
+ return { refusal: composedRefusal };
162
+ if (!new URL(composed).pathname.endsWith(suffix)) {
163
+ return {
164
+ refusal: {
165
+ reason: 'query_or_fragment_not_allowed',
166
+ message: 'A runner URL must be a plain base URL the platform can append a path to.',
167
+ },
168
+ };
169
+ }
170
+ return { url: composed };
171
+ }
81
172
  /** Max redirect hops the revalidating fetch will follow before giving up. */
82
173
  const MAX_LOCAL_RUNNER_REDIRECTS = 5;
83
174
  /**
84
175
  * Fetch a local-runner URL, re-validating the SSRF allow-list on EVERY redirect hop.
85
176
  *
86
- * The allow-list permits loopback/LAN hosts, but a permitted private runner can still
87
- * `302` to a denied host — most dangerously the cloud-metadata endpoint
88
- * (169.254.169.254) — and the platform `fetch` would follow it silently. So we drive
177
+ * The allow-list permits loopback (and, on opt-in, LAN) hosts, but a permitted runner can
178
+ * still `302` to a denied host, most dangerously the cloud-metadata endpoint
179
+ * (169.254.169.254), and the platform `fetch` would follow it silently. So we drive
89
180
  * redirects by hand (`redirect: 'manual'`) and run {@link localRunnerUrlError} against
90
181
  * each `Location` before following it, mirroring the environment provider's `safeFetch`.
91
182
  * Both server-side callers (the "Test connection" probe and the run-time LLM proxy
92
- * forward) use this instead of a bare `fetch`. Throws when a hop fails validation or the
183
+ * forward) use this instead of a bare `fetch`, through
184
+ * `LocalModelEndpointService.fetchRunner`, which binds the deployment's policy, so a row
185
+ * persisted while LAN access was enabled is refused at fetch time after an operator
186
+ * narrows the policy, not silently honoured. Throws when a hop fails validation or the
93
187
  * redirect chain is too long.
94
188
  */
95
- export async function fetchLocalRunner(rawUrl, init, doFetch = fetch) {
189
+ export async function fetchLocalRunner(rawUrl, init, doFetch = fetch, policy) {
96
190
  let current = rawUrl;
97
191
  for (let hop = 0;; hop++) {
98
- const err = localRunnerUrlError(current);
192
+ const err = localRunnerUrlRefusal(current, policy);
99
193
  if (err)
100
- throw new Error(`Blocked local-runner request: ${err}`);
194
+ throw new Error(`Blocked local-runner request: ${err.message}`);
101
195
  const res = await doFetch(current, { ...init, redirect: 'manual' });
102
196
  if (res.status < 300 || res.status >= 400)
103
197
  return res;
@@ -1 +1 @@
1
- {"version":3,"file":"localModelUrl.js","sourceRoot":"","sources":["../../../src/modules/providers/localModelUrl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"localModelUrl.js","sourceRoot":"","sources":["../../../src/modules/providers/localModelUrl.ts"],"names":[],"mappings":"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"}
@@ -151,18 +151,26 @@ export class BugHuntService {
151
151
  }
152
152
  }
153
153
  /**
154
- * Put the caller's board id on the field the target provider reads. The three vendors' board
155
- * notions are structurally different (a Jira project key, a Linear team UUID, an `owner/repo`
156
- * slug), which is exactly why the wire carries ONE opaque string and the mapping happens here
157
- * rather than in the SPA — a picker that had to know which field to fill would have to be
158
- * forked per provider.
154
+ * Put the caller's board id on the field the target provider reads. The three built-in vendors'
155
+ * board notions are structurally different (a Jira project key, a Linear team UUID, an
156
+ * `owner/repo` slug), which is exactly why the wire carries ONE opaque string and the mapping
157
+ * happens here rather than in the SPA — a picker that had to know which field to fill would have
158
+ * to be forked per provider.
159
+ *
160
+ * A DEPLOYMENT-REGISTERED source takes the opaque `boardId` leg. It must not fall through to
161
+ * `githubRepo`: every field here is a plain string, so a fall-through would hand a registered
162
+ * provider's board scope to the GitHub field and fail as "no matching issues" rather than as the
163
+ * mis-routing it is. The default is therefore keyed on the source being a BUILT-IN, not on it
164
+ * being un-matched.
159
165
  */
160
166
  function boardScopeFor(source, board) {
161
167
  if (source === 'jira')
162
168
  return { jiraProjectKey: board };
163
169
  if (source === 'linear')
164
170
  return { linearTeamId: board };
165
- return { githubRepo: board };
171
+ if (source === 'github')
172
+ return { githubRepo: board };
173
+ return { boardId: board };
166
174
  }
167
175
  /** Scrub the free-text fields of a candidate before it is sent to a model provider. */
168
176
  function scrubCandidate(candidate) {
@@ -1 +1 @@
1
- {"version":3,"file":"BugHuntService.js","sourceRoot":"","sources":["../../../src/modules/tasks/BugHuntService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BugHuntService.js","sourceRoot":"","sources":["../../../src/modules/tasks/BugHuntService.ts"],"names":[],"mappings":"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"}
@@ -10,11 +10,11 @@ export declare class GitHubIssuesProvider implements TaskSourceProvider {
10
10
  /**
11
11
  * Inbound webhook capability (verify + parse), so a github delivery can drive intake and
12
12
  * ticket replies without waiting for the next polling sweep. See
13
- * `docs/initiatives/tracker-webhook-intake.md`.
13
+ * `backend/docs/adr/0032-tracker-webhook-intake.md`.
14
14
  */
15
15
  readonly webhook: import("@cat-factory/kernel").TaskSourceWebhookAdapter;
16
16
  readonly descriptor: {
17
- source: "github" | "jira" | "linear";
17
+ source: string;
18
18
  label: string;
19
19
  icon: string;
20
20
  credentialFields: {
@@ -12,7 +12,7 @@ export class GitHubIssuesProvider {
12
12
  /**
13
13
  * Inbound webhook capability (verify + parse), so a github delivery can drive intake and
14
14
  * ticket replies without waiting for the next polling sweep. See
15
- * `docs/initiatives/tracker-webhook-intake.md`.
15
+ * `backend/docs/adr/0032-tracker-webhook-intake.md`.
16
16
  */
17
17
  webhook = githubIssuesWebhookAdapter;
18
18
  descriptor = GITHUB_ISSUES_DESCRIPTOR;
@@ -9,11 +9,11 @@ export declare class JiraProvider implements TaskSourceProvider {
9
9
  /**
10
10
  * Inbound webhook capability (verify + parse), so a jira delivery can drive intake and
11
11
  * ticket replies without waiting for the next polling sweep. See
12
- * `docs/initiatives/tracker-webhook-intake.md`.
12
+ * `backend/docs/adr/0032-tracker-webhook-intake.md`.
13
13
  */
14
14
  readonly webhook: import("@cat-factory/kernel").TaskSourceWebhookAdapter;
15
15
  readonly descriptor: {
16
- source: "github" | "jira" | "linear";
16
+ source: string;
17
17
  label: string;
18
18
  icon: string;
19
19
  credentialFields: {
@@ -32,7 +32,7 @@ export class JiraProvider {
32
32
  /**
33
33
  * Inbound webhook capability (verify + parse), so a jira delivery can drive intake and
34
34
  * ticket replies without waiting for the next polling sweep. See
35
- * `docs/initiatives/tracker-webhook-intake.md`.
35
+ * `backend/docs/adr/0032-tracker-webhook-intake.md`.
36
36
  */
37
37
  webhook = jiraWebhookAdapter;
38
38
  descriptor = JIRA_DESCRIPTOR;
@@ -5,11 +5,11 @@ export declare class LinearTaskProvider implements TaskSourceProvider {
5
5
  /**
6
6
  * Inbound webhook capability (verify + parse), so a linear delivery can drive intake and
7
7
  * ticket replies without waiting for the next polling sweep. See
8
- * `docs/initiatives/tracker-webhook-intake.md`.
8
+ * `backend/docs/adr/0032-tracker-webhook-intake.md`.
9
9
  */
10
10
  readonly webhook: import("@cat-factory/kernel").TaskSourceWebhookAdapter;
11
11
  readonly descriptor: {
12
- source: "github" | "jira" | "linear";
12
+ source: string;
13
13
  label: string;
14
14
  icon: string;
15
15
  credentialFields: {
@@ -17,7 +17,7 @@ export class LinearTaskProvider {
17
17
  /**
18
18
  * Inbound webhook capability (verify + parse), so a linear delivery can drive intake and
19
19
  * ticket replies without waiting for the next polling sweep. See
20
- * `docs/initiatives/tracker-webhook-intake.md`.
20
+ * `backend/docs/adr/0032-tracker-webhook-intake.md`.
21
21
  */
22
22
  webhook = linearWebhookAdapter;
23
23
  descriptor = LINEAR_TASK_DESCRIPTOR;
@@ -1,21 +1,48 @@
1
1
  import type { IssueIntakeConfig, TrackerIssueEvent } from '@cat-factory/kernel';
2
2
  /** The intake configuration a schedule carries (`PipelineSchedule.issueIntake`). */
3
- type IntakeConfig = Pick<IssueIntakeConfig, 'source' | 'predicates'>;
3
+ type IntakeConfig = Pick<IssueIntakeConfig, 'source' | 'board' | 'predicates'>;
4
+ /** The predicates an event is judged against, named so a verdict can say which one it was. */
5
+ export type IntakePredicateName = 'board' | 'labels' | 'titleFragment' | 'issueType';
4
6
  /**
5
- * Whether a pushed issue event plausibly matches a schedule's intake predicates.
7
+ * What a schedule's intake configuration makes of one pushed event.
6
8
  *
7
- * Matching rules, mirroring what `searchIssues` pushes into the vendor query:
9
+ * - `match`: every configured predicate is satisfied by the delivery.
10
+ * - `miss`: a configured predicate is definitively violated (or the event is for another source
11
+ * or a closed issue). No mode acts on it.
12
+ * - `unconfirmed`: nothing is violated, but the delivery does not carry the field(s) named in
13
+ * `predicates`, so the configuration's question is unanswered. Never conflated with `match`.
14
+ */
15
+ export type IntakeMatchVerdict = {
16
+ outcome: 'match';
17
+ } | {
18
+ outcome: 'miss';
19
+ predicate: IntakePredicateName | 'source' | 'closed';
20
+ } | {
21
+ outcome: 'unconfirmed';
22
+ predicates: IntakePredicateName[];
23
+ };
24
+ /**
25
+ * Judge a pushed issue event against a schedule's intake configuration.
26
+ *
27
+ * Rules, mirroring what `searchIssues` pushes into the vendor query:
8
28
  *
9
- * - **source** must be the schedule's source (an exact requirement, always evaluable).
10
- * - **labels** — every configured label must be present on the issue, case-insensitively (the
11
- * vendor queries are `AND`-semantics; GitHub and Jira both match labels case-insensitively).
12
- * - **titleFragment** — case-insensitive substring of the issue title.
13
- * - **issueType** — case-insensitive equality; a source with no issue-type notion (Linear) sends
14
- * `null`, which matches by the fail-open rule above rather than excluding the whole source.
29
+ * - **source** must be the schedule's source (always evaluable; a mismatch is a `miss`).
30
+ * - **board** must equal the configured scope for that source. The event carries it in exactly
31
+ * the shape the configured field does, so no per-vendor knowledge is needed here. A `null`
32
+ * board on the event is `unconfirmed`, never a match: a schedule scoped to one project must not
33
+ * be assumed to cover a delivery that never named one.
34
+ * - **labels**: every configured label must be present, case-insensitively (the vendor queries
35
+ * are `AND`-semantics; GitHub and Jira both match labels case-insensitively). An event carrying
36
+ * no labels at all cannot answer a label predicate, so it is `unconfirmed`.
37
+ * - **titleFragment**: a case-insensitive substring of the issue title; an empty title is
38
+ * `unconfirmed`.
39
+ * - **issueType**: case-insensitive equality. A source with no issue-type notion (Linear) sends
40
+ * `null`, which is `unconfirmed` rather than a miss, so the predicate does not exclude the whole
41
+ * source.
15
42
  *
16
- * A `closed` event never qualifies: intake picks up OPEN issues, and firing on a close would spend
43
+ * A `closed` event never qualifies: intake picks up OPEN issues, and acting on a close would spend
17
44
  * a run to discover the issue is gone.
18
45
  */
19
- export declare function issueEventMatchesIntake(config: IntakeConfig, event: TrackerIssueEvent): boolean;
46
+ export declare function judgeIssueEventForIntake(config: IntakeConfig, event: TrackerIssueEvent): IntakeMatchVerdict;
20
47
  export {};
21
48
  //# sourceMappingURL=intakeMatch.logic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"intakeMatch.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/tasks/intakeMatch.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAyB/E,oFAAoF;AACpF,KAAK,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE,QAAQ,GAAG,YAAY,CAAC,CAAA;AAEpE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CA2B/F"}
1
+ {"version":3,"file":"intakeMatch.logic.d.ts","sourceRoot":"","sources":["../../../src/modules/tasks/intakeMatch.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AA2B/E,oFAAoF;AACpF,KAAK,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE,QAAQ,GAAG,OAAO,GAAG,YAAY,CAAC,CAAA;AAE9E,8FAA8F;AAC9F,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,QAAQ,GAAG,eAAe,GAAG,WAAW,CAAA;AAEpF;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GACpB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,CAAA;CAAE,GACzE;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,mBAAmB,EAAE,CAAA;CAAE,CAAA;AAEjE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,iBAAiB,GACvB,kBAAkB,CA8CpB"}
@@ -1,43 +1,95 @@
1
1
  /**
2
- * Whether a pushed issue event plausibly matches a schedule's intake predicates.
2
+ * Judge a pushed issue event against a schedule's intake configuration.
3
3
  *
4
- * Matching rules, mirroring what `searchIssues` pushes into the vendor query:
4
+ * Rules, mirroring what `searchIssues` pushes into the vendor query:
5
5
  *
6
- * - **source** must be the schedule's source (an exact requirement, always evaluable).
7
- * - **labels** — every configured label must be present on the issue, case-insensitively (the
8
- * vendor queries are `AND`-semantics; GitHub and Jira both match labels case-insensitively).
9
- * - **titleFragment** — case-insensitive substring of the issue title.
10
- * - **issueType** — case-insensitive equality; a source with no issue-type notion (Linear) sends
11
- * `null`, which matches by the fail-open rule above rather than excluding the whole source.
6
+ * - **source** must be the schedule's source (always evaluable; a mismatch is a `miss`).
7
+ * - **board** must equal the configured scope for that source. The event carries it in exactly
8
+ * the shape the configured field does, so no per-vendor knowledge is needed here. A `null`
9
+ * board on the event is `unconfirmed`, never a match: a schedule scoped to one project must not
10
+ * be assumed to cover a delivery that never named one.
11
+ * - **labels**: every configured label must be present, case-insensitively (the vendor queries
12
+ * are `AND`-semantics; GitHub and Jira both match labels case-insensitively). An event carrying
13
+ * no labels at all cannot answer a label predicate, so it is `unconfirmed`.
14
+ * - **titleFragment**: a case-insensitive substring of the issue title; an empty title is
15
+ * `unconfirmed`.
16
+ * - **issueType**: case-insensitive equality. A source with no issue-type notion (Linear) sends
17
+ * `null`, which is `unconfirmed` rather than a miss, so the predicate does not exclude the whole
18
+ * source.
12
19
  *
13
- * A `closed` event never qualifies: intake picks up OPEN issues, and firing on a close would spend
20
+ * A `closed` event never qualifies: intake picks up OPEN issues, and acting on a close would spend
14
21
  * a run to discover the issue is gone.
15
22
  */
16
- export function issueEventMatchesIntake(config, event) {
23
+ export function judgeIssueEventForIntake(config, event) {
17
24
  if (event.source !== config.source)
18
- return false;
25
+ return { outcome: 'miss', predicate: 'source' };
19
26
  if (event.action === 'closed')
20
- return false;
21
- const predicates = config.predicates;
22
- const labels = predicates.labels ?? [];
27
+ return { outcome: 'miss', predicate: 'closed' };
28
+ const unconfirmed = [];
29
+ const scope = configuredBoard(config);
30
+ if (scope) {
31
+ // Read for EMPTINESS, not `=== null`. The typed null is one way a delivery says nothing; an
32
+ // adapter that omits the field, or a vendor that sent a blank string, say the same thing, and
33
+ // an absent value that fell through to the comparison would read as a definite miss and
34
+ // silently suppress a schedule rather than reporting that it could not be checked.
35
+ if (!event.board?.trim())
36
+ unconfirmed.push('board');
37
+ else if (!sameBoard(event.board, scope))
38
+ return { outcome: 'miss', predicate: 'board' };
39
+ }
40
+ const labels = config.predicates.labels ?? [];
23
41
  if (labels.length > 0) {
24
- // An event with NO labels array at all is indistinguishable from one whose labels the vendor
25
- // omitted from this payload shape, so an empty set fails open — the fired run's vendor search
26
- // is the authority either way.
27
- if (event.labels.length > 0) {
42
+ if (event.labels.length === 0)
43
+ unconfirmed.push('labels');
44
+ else {
28
45
  const present = new Set(event.labels.map((l) => l.toLowerCase()));
29
- if (!labels.every((label) => present.has(label.toLowerCase())))
30
- return false;
46
+ if (!labels.every((label) => present.has(label.toLowerCase()))) {
47
+ return { outcome: 'miss', predicate: 'labels' };
48
+ }
31
49
  }
32
50
  }
33
- const fragment = predicates.titleFragment?.trim();
34
- if (fragment && event.title && !event.title.toLowerCase().includes(fragment.toLowerCase())) {
35
- return false;
51
+ const fragment = config.predicates.titleFragment?.trim();
52
+ if (fragment) {
53
+ if (!event.title)
54
+ unconfirmed.push('titleFragment');
55
+ else if (!event.title.toLowerCase().includes(fragment.toLowerCase())) {
56
+ return { outcome: 'miss', predicate: 'titleFragment' };
57
+ }
36
58
  }
37
- const issueType = predicates.issueType?.trim();
38
- if (issueType && event.issueType && event.issueType.toLowerCase() !== issueType.toLowerCase()) {
39
- return false;
59
+ const issueType = config.predicates.issueType?.trim();
60
+ if (issueType) {
61
+ if (!event.issueType)
62
+ unconfirmed.push('issueType');
63
+ else if (event.issueType.toLowerCase() !== issueType.toLowerCase()) {
64
+ return { outcome: 'miss', predicate: 'issueType' };
65
+ }
40
66
  }
41
- return true;
67
+ return unconfirmed.length > 0
68
+ ? { outcome: 'unconfirmed', predicates: unconfirmed }
69
+ : { outcome: 'match' };
70
+ }
71
+ /**
72
+ * The one board scope a configuration carries, whichever leg holds it.
73
+ *
74
+ * Read as "the first leg that is set" rather than by switching on the source: the legs are
75
+ * mutually exclusive by construction (a built-in source fills its own, a registered one fills
76
+ * `boardId`), and switching here would need a per-source map that a deployment-registered source
77
+ * is by definition absent from, the exact shape `boardScopeFor` had to stop using.
78
+ */
79
+ function configuredBoard(config) {
80
+ const board = config.board;
81
+ return (board.jiraProjectKey?.trim() ||
82
+ board.linearTeamId?.trim() ||
83
+ board.githubRepo?.trim() ||
84
+ board.boardId?.trim() ||
85
+ undefined);
86
+ }
87
+ /**
88
+ * Case-insensitive comparison, because the two sides are typed by different hands: a Jira project
89
+ * key and a GitHub `owner/repo` are both case-insensitive at the vendor, and the operator typed
90
+ * one of them into a form. A Linear team UUID is unaffected by folding case.
91
+ */
92
+ function sameBoard(a, b) {
93
+ return a.trim().toLowerCase() === b.trim().toLowerCase();
42
94
  }
43
95
  //# sourceMappingURL=intakeMatch.logic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"intakeMatch.logic.js","sourceRoot":"","sources":["../../../src/modules/tasks/intakeMatch.logic.ts"],"names":[],"mappings":"AA4BA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAoB,EAAE,KAAwB;IACpF,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAChD,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAE3C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAA;IACpC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,EAAE,CAAA;IACtC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,6FAA6F;QAC7F,8FAA8F;QAC9F,+BAA+B;QAC/B,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;YACjE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAA;QAC9E,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE,CAAA;IACjD,IAAI,QAAQ,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAC3F,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,CAAA;IAC9C,IAAI,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;QAC9F,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"intakeMatch.logic.js","sourceRoot":"","sources":["../../../src/modules/tasks/intakeMatch.logic.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../../../src/modules/tasks/webhook/adapters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAGzB,MAAM,qBAAqB,CAAA;AA4B5B;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,0BAA0B,EAAE,wBA+CxC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,wBAoDhC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,wBAiDlC,CAAA"}
1
+ {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../../../src/modules/tasks/webhook/adapters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EAGzB,MAAM,qBAAqB,CAAA;AA4B5B;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,0BAA0B,EAAE,wBAkDxC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,wBAuDhC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,wBAsDlC,CAAA"}
@@ -78,6 +78,9 @@ export const githubIssuesWebhookAdapter = {
78
78
  title: readString(payload, 'issue', 'title') ?? '',
79
79
  labels: readNameList(payload, 'issue', 'labels'),
80
80
  issueType: readString(payload, 'issue', 'type', 'name'),
81
+ // The `owner/name` slug is exactly what `IssueIntakeQuery.board.githubRepo` carries, and
82
+ // it is already parsed above for the external id.
83
+ board: repo,
81
84
  url: readString(payload, 'issue', 'html_url'),
82
85
  };
83
86
  }
@@ -136,6 +139,9 @@ export const jiraWebhookAdapter = {
136
139
  title: readString(fields, 'summary') ?? '',
137
140
  labels: readStringList(fields, 'labels'),
138
141
  issueType: readString(fields, 'issuetype', 'name'),
142
+ // The project KEY, not its numeric id: `IssueIntakeQuery.board.jiraProjectKey` is what a
143
+ // schedule stores and what `listBoards` hands back, and JQL scopes on the key.
144
+ board: readString(fields, 'project', 'key')?.toUpperCase() ?? null,
139
145
  url: readString(payload, 'issue', 'self'),
140
146
  };
141
147
  }
@@ -193,6 +199,11 @@ export const linearWebhookAdapter = {
193
199
  // Linear has no issue-type notion; intake's `issueType` predicate is a no-op here, the
194
200
  // same way `searchIssues` ignores it for this source.
195
201
  issueType: null,
202
+ // The team UUID, which is what `buildLinearIntakeFilter` matches on (`team.id.eq`) and
203
+ // what `listTeams` hands the board picker, never the human team KEY, which would look
204
+ // plausible and never match. Linear sends the nested team on most Issue payloads and a
205
+ // bare `teamId` on the leaner ones.
206
+ board: readString(data, 'team', 'id') ?? readString(data, 'teamId'),
196
207
  url: readString(data, 'url'),
197
208
  };
198
209
  }
@@ -1 +1 @@
1
- {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../../../src/modules/tasks/webhook/adapters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../../../src/modules/tasks/webhook/adapters.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/integrations",
3
- "version": "0.120.0",
3
+ "version": "0.121.0",
4
4
  "description": "External-system integration domain logic for the Agent Architecture Board (GitHub, documents, tasks, environments, runners).",
5
5
  "repository": {
6
6
  "type": "git",
@@ -27,15 +27,15 @@
27
27
  "ai": "^7.0.47",
28
28
  "p-map": "^7.0.6",
29
29
  "yaml": "^2.9.0",
30
- "@cat-factory/contracts": "0.218.0",
31
- "@cat-factory/kernel": "0.221.0"
30
+ "@cat-factory/contracts": "0.220.0",
31
+ "@cat-factory/kernel": "0.222.0"
32
32
  },
33
33
  "devDependencies": {
34
34
  "typescript": "7.0.2",
35
35
  "undici": "^8.9.0",
36
36
  "valibot": "^1.4.2",
37
37
  "vitest": "^4.1.10",
38
- "@cat-factory/caching": "0.13.6"
38
+ "@cat-factory/caching": "0.13.8"
39
39
  },
40
40
  "scripts": {
41
41
  "build": "tsc -b tsconfig.build.json",