@altura_ma/onemcp 0.2.0 → 0.3.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.
@@ -0,0 +1,93 @@
1
+ import type { Provenance } from "../schemas/canonical.js";
2
+ import { Connector, type ConnectorMetadata } from "./base.js";
3
+ export interface Commune {
4
+ code: string;
5
+ nom: string;
6
+ codeDepartement?: string;
7
+ codeRegion?: string;
8
+ codesPostaux?: string[];
9
+ population?: number;
10
+ centre?: {
11
+ type: string;
12
+ coordinates: [number, number];
13
+ };
14
+ surface?: number;
15
+ siren?: string;
16
+ codeEpci?: string;
17
+ }
18
+ export interface Departement {
19
+ code: string;
20
+ nom: string;
21
+ codeRegion: string;
22
+ }
23
+ export interface Region {
24
+ code: string;
25
+ nom: string;
26
+ }
27
+ export interface Epci {
28
+ code: string;
29
+ nom: string;
30
+ type?: string;
31
+ populationTotale?: number;
32
+ financesPubliques?: unknown;
33
+ }
34
+ interface CommuneFilters {
35
+ nom?: string;
36
+ code?: string;
37
+ codePostal?: string;
38
+ codeDepartement?: string;
39
+ codeRegion?: string;
40
+ codeEpci?: string;
41
+ lat?: number;
42
+ lon?: number;
43
+ limit?: number;
44
+ }
45
+ export declare class GeoFranceConnector extends Connector {
46
+ readonly metadata: ConnectorMetadata;
47
+ private prov;
48
+ listCommunes(filters?: CommuneFilters): Promise<{
49
+ data: Commune[];
50
+ provenance: Provenance[];
51
+ }>;
52
+ getCommune(code: string): Promise<{
53
+ data: Commune;
54
+ provenance: Provenance[];
55
+ }>;
56
+ listDepartements(codeRegion?: string): Promise<{
57
+ data: Departement[];
58
+ provenance: Provenance[];
59
+ }>;
60
+ getDepartement(code: string): Promise<{
61
+ data: Departement;
62
+ provenance: Provenance[];
63
+ }>;
64
+ listCommunesByDepartement(code: string): Promise<{
65
+ data: Commune[];
66
+ provenance: Provenance[];
67
+ }>;
68
+ listRegions(): Promise<{
69
+ data: Region[];
70
+ provenance: Provenance[];
71
+ }>;
72
+ getRegion(code: string): Promise<{
73
+ data: Region;
74
+ provenance: Provenance[];
75
+ }>;
76
+ listEpcis(filters?: {
77
+ codeRegion?: string;
78
+ codeDepartement?: string;
79
+ }): Promise<{
80
+ data: Epci[];
81
+ provenance: Provenance[];
82
+ }>;
83
+ getEpci(code: string): Promise<{
84
+ data: Epci;
85
+ provenance: Provenance[];
86
+ }>;
87
+ listCommunesByEpci(code: string): Promise<{
88
+ data: Commune[];
89
+ provenance: Provenance[];
90
+ }>;
91
+ }
92
+ export {};
93
+ //# sourceMappingURL=geo-france.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geo-france.d.ts","sourceRoot":"","sources":["../../src/connectors/geo-france.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import { Connector } from "./base.js";
2
+ const BASE_URL = "https://geo.api.gouv.fr";
3
+ export class GeoFranceConnector extends Connector {
4
+ metadata = {
5
+ id: "geo-france",
6
+ name: "Découpage administratif (DINUM)",
7
+ description: "Référentiel officiel des communes, départements, régions et EPCI français.",
8
+ source: "https://geo.api.gouv.fr",
9
+ license: "Licence Ouverte 2.0 (Etalab)",
10
+ authRequired: false,
11
+ defaultTtlSeconds: 86400 * 30,
12
+ };
13
+ prov(url) {
14
+ return {
15
+ source: this.metadata.id,
16
+ source_url: url,
17
+ fetched_at: new Date().toISOString(),
18
+ license: this.metadata.license,
19
+ };
20
+ }
21
+ async listCommunes(filters = {}) {
22
+ const params = new URLSearchParams();
23
+ for (const [k, v] of Object.entries(filters)) {
24
+ if (v !== undefined && v !== null)
25
+ params.set(k, String(v));
26
+ }
27
+ const fields = "nom,code,codesPostaux,codeDepartement,codeRegion,codeEpci,population,centre,siren";
28
+ params.set("fields", fields);
29
+ const url = `${BASE_URL}/communes?${params}`;
30
+ const data = await this.getJson(url);
31
+ return { data, provenance: [this.prov(url)] };
32
+ }
33
+ async getCommune(code) {
34
+ const url = `${BASE_URL}/communes/${encodeURIComponent(code)}?fields=nom,code,codesPostaux,codeDepartement,codeRegion,codeEpci,population,centre,surface,siren`;
35
+ const data = await this.getJson(url);
36
+ return { data, provenance: [this.prov(url)] };
37
+ }
38
+ async listDepartements(codeRegion) {
39
+ const url = `${BASE_URL}/departements${codeRegion ? `?codeRegion=${encodeURIComponent(codeRegion)}` : ""}`;
40
+ const data = await this.getJson(url);
41
+ return { data, provenance: [this.prov(url)] };
42
+ }
43
+ async getDepartement(code) {
44
+ const url = `${BASE_URL}/departements/${encodeURIComponent(code)}`;
45
+ const data = await this.getJson(url);
46
+ return { data, provenance: [this.prov(url)] };
47
+ }
48
+ async listCommunesByDepartement(code) {
49
+ const url = `${BASE_URL}/departements/${encodeURIComponent(code)}/communes?fields=nom,code,codesPostaux,codeRegion,codeEpci,population`;
50
+ const data = await this.getJson(url);
51
+ return { data, provenance: [this.prov(url)] };
52
+ }
53
+ async listRegions() {
54
+ const url = `${BASE_URL}/regions`;
55
+ const data = await this.getJson(url);
56
+ return { data, provenance: [this.prov(url)] };
57
+ }
58
+ async getRegion(code) {
59
+ const url = `${BASE_URL}/regions/${encodeURIComponent(code)}`;
60
+ const data = await this.getJson(url);
61
+ return { data, provenance: [this.prov(url)] };
62
+ }
63
+ async listEpcis(filters = {}) {
64
+ const params = new URLSearchParams();
65
+ for (const [k, v] of Object.entries(filters)) {
66
+ if (v)
67
+ params.set(k, String(v));
68
+ }
69
+ const url = `${BASE_URL}/epcis${params.toString() ? `?${params}` : ""}`;
70
+ const data = await this.getJson(url);
71
+ return { data, provenance: [this.prov(url)] };
72
+ }
73
+ async getEpci(code) {
74
+ const url = `${BASE_URL}/epcis/${encodeURIComponent(code)}`;
75
+ const data = await this.getJson(url);
76
+ return { data, provenance: [this.prov(url)] };
77
+ }
78
+ async listCommunesByEpci(code) {
79
+ const url = `${BASE_URL}/epcis/${encodeURIComponent(code)}/communes?fields=nom,code,codesPostaux,codeDepartement,codeRegion,population`;
80
+ const data = await this.getJson(url);
81
+ return { data, provenance: [this.prov(url)] };
82
+ }
83
+ }
84
+ //# sourceMappingURL=geo-france.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geo-france.js","sourceRoot":"","sources":["../../src/connectors/geo-france.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,12 @@ import { CompaniesHouseConnector } from "./companies-house.js";
4
4
  import { DvfConnector } from "./dvf.js";
5
5
  import { EpoOpsConnector } from "./epo-ops.js";
6
6
  import { FranceTravailConnector } from "./france-travail.js";
7
+ import { GeoFranceConnector } from "./geo-france.js";
7
8
  import { GeorisquesConnector } from "./georisques.js";
8
9
  import { GleifConnector } from "./gleif.js";
9
10
  import { InpiRneConnector } from "./inpi-rne.js";
10
11
  import { InseeSireneConnector } from "./insee-sirene.js";
12
+ import { OpendatasoftConnector } from "./opendatasoft.js";
11
13
  import { RechercheEntreprisesConnector } from "./recherche-entreprises.js";
12
14
  import { ViesConnector } from "./vies.js";
13
15
  export declare const connectors: {
@@ -23,7 +25,10 @@ export declare const connectors: {
23
25
  readonly companiesHouse: CompaniesHouseConnector;
24
26
  readonly epoOps: EpoOpsConnector;
25
27
  readonly franceTravail: FranceTravailConnector;
28
+ readonly geoFrance: GeoFranceConnector;
29
+ readonly decp: OpendatasoftConnector;
30
+ readonly infogreffe: OpendatasoftConnector;
26
31
  };
27
32
  export type Connectors = typeof connectors;
28
- export { BanConnector, BodaccConnector, CompaniesHouseConnector, DvfConnector, EpoOpsConnector, FranceTravailConnector, GeorisquesConnector, GleifConnector, InpiRneConnector, InseeSireneConnector, RechercheEntreprisesConnector, ViesConnector, };
33
+ export { BanConnector, BodaccConnector, CompaniesHouseConnector, DvfConnector, EpoOpsConnector, FranceTravailConnector, GeoFranceConnector, GeorisquesConnector, GleifConnector, InpiRneConnector, InseeSireneConnector, OpendatasoftConnector, RechercheEntreprisesConnector, ViesConnector, };
29
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connectors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,eAAO,MAAM,UAAU;;;;;;;;;;;;;CAab,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC;AAE3C,OAAO,EACL,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,6BAA6B,EAC7B,aAAa,GACd,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connectors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAsC,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;CAgBb,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC;AAE3C,OAAO,EACL,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,6BAA6B,EAC7B,aAAa,GACd,CAAC"}
@@ -4,10 +4,12 @@ import { CompaniesHouseConnector } from "./companies-house.js";
4
4
  import { DvfConnector } from "./dvf.js";
5
5
  import { EpoOpsConnector } from "./epo-ops.js";
6
6
  import { FranceTravailConnector } from "./france-travail.js";
7
+ import { GeoFranceConnector } from "./geo-france.js";
7
8
  import { GeorisquesConnector } from "./georisques.js";
8
9
  import { GleifConnector } from "./gleif.js";
9
10
  import { InpiRneConnector } from "./inpi-rne.js";
10
11
  import { InseeSireneConnector } from "./insee-sirene.js";
12
+ import { OpendatasoftConnector, decpConnector, infogreffeConnector } from "./opendatasoft.js";
11
13
  import { RechercheEntreprisesConnector } from "./recherche-entreprises.js";
12
14
  import { ViesConnector } from "./vies.js";
13
15
  export const connectors = {
@@ -23,6 +25,9 @@ export const connectors = {
23
25
  companiesHouse: new CompaniesHouseConnector(),
24
26
  epoOps: new EpoOpsConnector(),
25
27
  franceTravail: new FranceTravailConnector(),
28
+ geoFrance: new GeoFranceConnector(),
29
+ decp: decpConnector,
30
+ infogreffe: infogreffeConnector,
26
31
  };
27
- export { BanConnector, BodaccConnector, CompaniesHouseConnector, DvfConnector, EpoOpsConnector, FranceTravailConnector, GeorisquesConnector, GleifConnector, InpiRneConnector, InseeSireneConnector, RechercheEntreprisesConnector, ViesConnector, };
32
+ export { BanConnector, BodaccConnector, CompaniesHouseConnector, DvfConnector, EpoOpsConnector, FranceTravailConnector, GeoFranceConnector, GeorisquesConnector, GleifConnector, InpiRneConnector, InseeSireneConnector, OpendatasoftConnector, RechercheEntreprisesConnector, ViesConnector, };
28
33
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connectors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,oBAAoB,EAAE,IAAI,6BAA6B,EAAE;IACzD,IAAI,EAAE,IAAI,aAAa,EAAE;IACzB,KAAK,EAAE,IAAI,cAAc,EAAE;IAC3B,GAAG,EAAE,IAAI,YAAY,EAAE;IACvB,MAAM,EAAE,IAAI,eAAe,EAAE;IAC7B,GAAG,EAAE,IAAI,YAAY,EAAE;IACvB,UAAU,EAAE,IAAI,mBAAmB,EAAE;IACrC,WAAW,EAAE,IAAI,oBAAoB,EAAE;IACvC,OAAO,EAAE,IAAI,gBAAgB,EAAE;IAC/B,cAAc,EAAE,IAAI,uBAAuB,EAAE;IAC7C,MAAM,EAAE,IAAI,eAAe,EAAE;IAC7B,aAAa,EAAE,IAAI,sBAAsB,EAAE;CACnC,CAAC;AAIX,OAAO,EACL,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,6BAA6B,EAC7B,aAAa,GACd,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connectors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,oBAAoB,EAAE,IAAI,6BAA6B,EAAE;IACzD,IAAI,EAAE,IAAI,aAAa,EAAE;IACzB,KAAK,EAAE,IAAI,cAAc,EAAE;IAC3B,GAAG,EAAE,IAAI,YAAY,EAAE;IACvB,MAAM,EAAE,IAAI,eAAe,EAAE;IAC7B,GAAG,EAAE,IAAI,YAAY,EAAE;IACvB,UAAU,EAAE,IAAI,mBAAmB,EAAE;IACrC,WAAW,EAAE,IAAI,oBAAoB,EAAE;IACvC,OAAO,EAAE,IAAI,gBAAgB,EAAE;IAC/B,cAAc,EAAE,IAAI,uBAAuB,EAAE;IAC7C,MAAM,EAAE,IAAI,eAAe,EAAE;IAC7B,aAAa,EAAE,IAAI,sBAAsB,EAAE;IAC3C,SAAS,EAAE,IAAI,kBAAkB,EAAE;IACnC,IAAI,EAAE,aAAa;IACnB,UAAU,EAAE,mBAAmB;CACvB,CAAC;AAIX,OAAO,EACL,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,6BAA6B,EAC7B,aAAa,GACd,CAAC"}
@@ -0,0 +1,51 @@
1
+ import type { Provenance } from "../schemas/canonical.js";
2
+ import { Connector, type ConnectorMetadata } from "./base.js";
3
+ export interface OdsQuery {
4
+ where?: string;
5
+ select?: string;
6
+ groupBy?: string;
7
+ orderBy?: string;
8
+ limit?: number;
9
+ offset?: number;
10
+ refine?: string[];
11
+ exclude?: string[];
12
+ }
13
+ export interface OdsResponse<T = Record<string, unknown>> {
14
+ total_count: number;
15
+ results: T[];
16
+ }
17
+ /**
18
+ * Generic Opendatasoft Explore API v2.1 connector.
19
+ * Configured per-instance with `baseUrl` (e.g. https://data.economie.gouv.fr/api/explore/v2.1).
20
+ */
21
+ export declare class OpendatasoftConnector extends Connector {
22
+ readonly metadata: ConnectorMetadata;
23
+ private readonly baseUrl;
24
+ constructor(opts: {
25
+ id: string;
26
+ name: string;
27
+ source: string;
28
+ license: string;
29
+ baseUrl: string;
30
+ ttlSeconds?: number;
31
+ });
32
+ private prov;
33
+ private buildQuery;
34
+ records<T = Record<string, unknown>>(datasetId: string, query?: OdsQuery): Promise<{
35
+ data: OdsResponse<T>;
36
+ provenance: Provenance[];
37
+ }>;
38
+ dataset(datasetId: string): Promise<{
39
+ data: unknown;
40
+ provenance: Provenance[];
41
+ }>;
42
+ listDatasets(query?: OdsQuery): Promise<{
43
+ data: OdsResponse;
44
+ provenance: Provenance[];
45
+ }>;
46
+ }
47
+ /** Marchés Publics DECP (data.economie.gouv.fr). */
48
+ export declare const decpConnector: OpendatasoftConnector;
49
+ /** Infogreffe Open Data. */
50
+ export declare const infogreffeConnector: OpendatasoftConnector;
51
+ //# sourceMappingURL=opendatasoft.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opendatasoft.d.ts","sourceRoot":"","sources":["../../src/connectors/opendatasoft.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9D,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,CAAC,EAAE,CAAC;CACd;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,SAAS;IAClD,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,IAAI,EAAE;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB;IAcD,OAAO,CAAC,IAAI;IASZ,OAAO,CAAC,UAAU;IAaZ,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,QAAa,GACnB,OAAO,CAAC;QAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;QAAC,UAAU,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IAOxD,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IAMhF,YAAY,CAAC,KAAK,GAAE,QAAa,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,UAAU,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;CAMnG;AAED,oDAAoD;AACpD,eAAO,MAAM,aAAa,uBAOxB,CAAC;AAEH,4BAA4B;AAC5B,eAAO,MAAM,mBAAmB,uBAO9B,CAAC"}
@@ -0,0 +1,86 @@
1
+ import { Connector } from "./base.js";
2
+ /**
3
+ * Generic Opendatasoft Explore API v2.1 connector.
4
+ * Configured per-instance with `baseUrl` (e.g. https://data.economie.gouv.fr/api/explore/v2.1).
5
+ */
6
+ export class OpendatasoftConnector extends Connector {
7
+ metadata;
8
+ baseUrl;
9
+ constructor(opts) {
10
+ super();
11
+ this.baseUrl = opts.baseUrl.replace(/\/$/, "");
12
+ this.metadata = {
13
+ id: opts.id,
14
+ name: opts.name,
15
+ description: `Opendatasoft API — ${opts.name}`,
16
+ source: opts.source,
17
+ license: opts.license,
18
+ authRequired: false,
19
+ defaultTtlSeconds: opts.ttlSeconds ?? 3600 * 6,
20
+ };
21
+ }
22
+ prov(url) {
23
+ return {
24
+ source: this.metadata.id,
25
+ source_url: url,
26
+ fetched_at: new Date().toISOString(),
27
+ license: this.metadata.license,
28
+ };
29
+ }
30
+ buildQuery(q) {
31
+ const params = new URLSearchParams();
32
+ if (q.where)
33
+ params.set("where", q.where);
34
+ if (q.select)
35
+ params.set("select", q.select);
36
+ if (q.groupBy)
37
+ params.set("group_by", q.groupBy);
38
+ if (q.orderBy)
39
+ params.set("order_by", q.orderBy);
40
+ if (q.limit !== undefined)
41
+ params.set("limit", String(q.limit));
42
+ if (q.offset !== undefined)
43
+ params.set("offset", String(q.offset));
44
+ for (const r of q.refine ?? [])
45
+ params.append("refine", r);
46
+ for (const e of q.exclude ?? [])
47
+ params.append("exclude", e);
48
+ return params.toString();
49
+ }
50
+ async records(datasetId, query = {}) {
51
+ const qs = this.buildQuery({ limit: 20, ...query });
52
+ const url = `${this.baseUrl}/catalog/datasets/${encodeURIComponent(datasetId)}/records${qs ? `?${qs}` : ""}`;
53
+ const data = await this.getJson(url);
54
+ return { data, provenance: [this.prov(url)] };
55
+ }
56
+ async dataset(datasetId) {
57
+ const url = `${this.baseUrl}/catalog/datasets/${encodeURIComponent(datasetId)}`;
58
+ const data = await this.getJson(url);
59
+ return { data, provenance: [this.prov(url)] };
60
+ }
61
+ async listDatasets(query = {}) {
62
+ const qs = this.buildQuery({ limit: 20, ...query });
63
+ const url = `${this.baseUrl}/catalog/datasets${qs ? `?${qs}` : ""}`;
64
+ const data = await this.getJson(url);
65
+ return { data, provenance: [this.prov(url)] };
66
+ }
67
+ }
68
+ /** Marchés Publics DECP (data.economie.gouv.fr). */
69
+ export const decpConnector = new OpendatasoftConnector({
70
+ id: "decp",
71
+ name: "DECP — Marchés Publics",
72
+ source: "https://data.economie.gouv.fr",
73
+ license: "Licence Ouverte 2.0 (Etalab)",
74
+ baseUrl: "https://data.economie.gouv.fr/api/explore/v2.1",
75
+ ttlSeconds: 86400,
76
+ });
77
+ /** Infogreffe Open Data. */
78
+ export const infogreffeConnector = new OpendatasoftConnector({
79
+ id: "infogreffe",
80
+ name: "Infogreffe Open Data",
81
+ source: "https://opendata.datainfogreffe.fr",
82
+ license: "Licence Ouverte 2.0 (Etalab)",
83
+ baseUrl: "https://opendata.datainfogreffe.fr/api/explore/v2.1",
84
+ ttlSeconds: 86400,
85
+ });
86
+ //# sourceMappingURL=opendatasoft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opendatasoft.js","sourceRoot":"","sources":["../../src/connectors/opendatasoft.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type AnyTool } from "./types.js";
2
+ export declare const adminGeoTools: AnyTool[];
3
+ //# sourceMappingURL=admin-geo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-geo.d.ts","sourceRoot":"","sources":["../../src/tools/admin-geo.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AA2EtD,eAAO,MAAM,aAAa,EAAE,OAAO,EAQlC,CAAC"}
@@ -0,0 +1,72 @@
1
+ import { z } from "zod";
2
+ import { connectors } from "../connectors/index.js";
3
+ import { defineTool } from "./types.js";
4
+ const adminCommuneSearch = defineTool({
5
+ name: "admin_commune_search",
6
+ description: "Recherche une commune française par nom, code INSEE, code postal ou coordonnées GPS. " +
7
+ "Retourne nom officiel, code INSEE, département, région, EPCI, population, centre. " +
8
+ "Source : Découpage administratif officiel (DINUM, geo.api.gouv.fr).",
9
+ inputSchema: z.object({
10
+ nom: z.string().optional(),
11
+ codePostal: z.string().optional(),
12
+ codeDepartement: z.string().optional(),
13
+ lat: z.number().min(-90).max(90).optional(),
14
+ lon: z.number().min(-180).max(180).optional(),
15
+ limit: z.number().int().min(1).max(50).default(20).optional(),
16
+ }),
17
+ handler: async (input) => connectors.geoFrance.listCommunes(input),
18
+ });
19
+ const adminCommuneGet = defineTool({
20
+ name: "admin_commune_get",
21
+ description: "Fiche détaillée d'une commune française par code INSEE (5 chiffres, ex: 75056 pour Paris). " +
22
+ "Retourne population, surface, SIREN, codes postaux, département/région/EPCI de rattachement.",
23
+ inputSchema: z.object({ code: z.string().regex(/^\d{5}[A-Z]?$/) }),
24
+ handler: async (input) => connectors.geoFrance.getCommune(input.code),
25
+ });
26
+ const adminDepartementList = defineTool({
27
+ name: "admin_departement_list",
28
+ description: "Liste des 101 départements français (code 2 chiffres / 2A / 2B / 971-976). " +
29
+ "Filtrable par code région. Source officielle DINUM.",
30
+ inputSchema: z.object({ codeRegion: z.string().optional() }),
31
+ handler: async (input) => connectors.geoFrance.listDepartements(input.codeRegion),
32
+ });
33
+ const adminDepartementCommunes = defineTool({
34
+ name: "admin_departement_communes",
35
+ description: "Liste toutes les communes d'un département (par code département : 75, 13, 2A, 971…). " +
36
+ "Très utile pour énumérer un territoire (B2B sectorisation, prospection locale).",
37
+ inputSchema: z.object({ code: z.string().min(2).max(3) }),
38
+ handler: async (input) => connectors.geoFrance.listCommunesByDepartement(input.code),
39
+ });
40
+ const adminRegionList = defineTool({
41
+ name: "admin_region_list",
42
+ description: "Liste des 18 régions françaises (13 métropole + 5 DOM). Retourne code et nom officiel.",
43
+ inputSchema: z.object({}),
44
+ handler: async () => connectors.geoFrance.listRegions(),
45
+ });
46
+ const adminEpciList = defineTool({
47
+ name: "admin_epci_list",
48
+ description: "Liste des EPCI (intercommunalités : métropoles, communautés d'agglomération, communautés de communes). " +
49
+ "Filtrable par région ou département. Critique pour comprendre les compétences territoriales.",
50
+ inputSchema: z.object({
51
+ codeRegion: z.string().optional(),
52
+ codeDepartement: z.string().optional(),
53
+ }),
54
+ handler: async (input) => connectors.geoFrance.listEpcis(input),
55
+ });
56
+ const adminEpciCommunes = defineTool({
57
+ name: "admin_epci_communes",
58
+ description: "Liste les communes membres d'une EPCI par son code SIREN. " +
59
+ "Source : Découpage administratif officiel.",
60
+ inputSchema: z.object({ code: z.string().regex(/^\d{9}$/) }),
61
+ handler: async (input) => connectors.geoFrance.listCommunesByEpci(input.code),
62
+ });
63
+ export const adminGeoTools = [
64
+ adminCommuneSearch,
65
+ adminCommuneGet,
66
+ adminDepartementList,
67
+ adminDepartementCommunes,
68
+ adminRegionList,
69
+ adminEpciList,
70
+ adminEpciCommunes,
71
+ ];
72
+ //# sourceMappingURL=admin-geo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-geo.js","sourceRoot":"","sources":["../../src/tools/admin-geo.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { adminGeoTools } from "./admin-geo.js";
1
2
  import { companyLayer2Tools } from "./company-layer2.js";
2
3
  import { companyTools } from "./company.js";
3
4
  import { geoTools } from "./geo.js";
@@ -5,10 +6,11 @@ import { identityTools } from "./identity.js";
5
6
  import { jobTools } from "./jobs.js";
6
7
  import { legalTools } from "./legal.js";
7
8
  import { patentTools } from "./patents.js";
9
+ import { publicContractTools } from "./public-contracts.js";
8
10
  import { realEstateTools } from "./realestate.js";
9
11
  import { sourceTools } from "./sources.js";
10
12
  import type { AnyTool } from "./types.js";
11
13
  export declare const allTools: AnyTool[];
12
- export { companyLayer2Tools, companyTools, geoTools, identityTools, jobTools, legalTools, patentTools, realEstateTools, sourceTools, };
14
+ export { adminGeoTools, companyLayer2Tools, companyTools, geoTools, identityTools, jobTools, legalTools, patentTools, publicContractTools, realEstateTools, sourceTools, };
13
15
  export type { AnyTool, ToolDefinition } from "./types.js";
14
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,QAAQ,EAAE,OAAO,EAU7B,CAAC;AAEF,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,UAAU,EACV,WAAW,EACX,eAAe,EACf,WAAW,GACZ,CAAC;AACF,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,QAAQ,EAAE,OAAO,EAY7B,CAAC;AAEF,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,WAAW,GACZ,CAAC;AACF,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { adminGeoTools } from "./admin-geo.js";
1
2
  import { companyLayer2Tools } from "./company-layer2.js";
2
3
  import { companyTools } from "./company.js";
3
4
  import { geoTools } from "./geo.js";
@@ -5,6 +6,7 @@ import { identityTools } from "./identity.js";
5
6
  import { jobTools } from "./jobs.js";
6
7
  import { legalTools } from "./legal.js";
7
8
  import { patentTools } from "./patents.js";
9
+ import { publicContractTools } from "./public-contracts.js";
8
10
  import { realEstateTools } from "./realestate.js";
9
11
  import { sourceTools } from "./sources.js";
10
12
  export const allTools = [
@@ -12,11 +14,13 @@ export const allTools = [
12
14
  ...companyLayer2Tools,
13
15
  ...legalTools,
14
16
  ...geoTools,
17
+ ...adminGeoTools,
15
18
  ...realEstateTools,
16
19
  ...identityTools,
17
20
  ...patentTools,
18
21
  ...jobTools,
22
+ ...publicContractTools,
19
23
  ...sourceTools,
20
24
  ];
21
- export { companyLayer2Tools, companyTools, geoTools, identityTools, jobTools, legalTools, patentTools, realEstateTools, sourceTools, };
25
+ export { adminGeoTools, companyLayer2Tools, companyTools, geoTools, identityTools, jobTools, legalTools, patentTools, publicContractTools, realEstateTools, sourceTools, };
22
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,CAAC,MAAM,QAAQ,GAAc;IACjC,GAAG,YAAY;IACf,GAAG,kBAAkB;IACrB,GAAG,UAAU;IACb,GAAG,QAAQ;IACX,GAAG,eAAe;IAClB,GAAG,aAAa;IAChB,GAAG,WAAW;IACd,GAAG,QAAQ;IACX,GAAG,WAAW;CACf,CAAC;AAEF,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,UAAU,EACV,WAAW,EACX,eAAe,EACf,WAAW,GACZ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,CAAC,MAAM,QAAQ,GAAc;IACjC,GAAG,YAAY;IACf,GAAG,kBAAkB;IACrB,GAAG,UAAU;IACb,GAAG,QAAQ;IACX,GAAG,aAAa;IAChB,GAAG,eAAe;IAClB,GAAG,aAAa;IAChB,GAAG,WAAW;IACd,GAAG,QAAQ;IACX,GAAG,mBAAmB;IACtB,GAAG,WAAW;CACf,CAAC;AAEF,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,WAAW,GACZ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type AnyTool } from "./types.js";
2
+ export declare const publicContractTools: AnyTool[];
3
+ //# sourceMappingURL=public-contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-contracts.d.ts","sourceRoot":"","sources":["../../src/tools/public-contracts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AA2DtD,eAAO,MAAM,mBAAmB,EAAE,OAAO,EAA4B,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { z } from "zod";
2
+ import { connectors } from "../connectors/index.js";
3
+ import { defineTool } from "./types.js";
4
+ const DECP_DATASET = "decp-2022-marches-valides";
5
+ const publicContractsSearch = defineTool({
6
+ name: "public_contracts_search",
7
+ description: "Recherche dans les marchés publics français (DECP — Données Essentielles de la Commande Publique). " +
8
+ "Permet de trouver tous les marchés attribués par acheteur (SIREN), titulaire (SIRET), objet, code CPV, " +
9
+ "département d'exécution, ou plage de dates. Gold mine B2B : qui gagne quels contrats publics ? " +
10
+ "Source officielle : data.economie.gouv.fr.",
11
+ inputSchema: z.object({
12
+ siret_titulaire: z.string().regex(/^\d{14}$/).optional().describe("SIRET de l'entreprise titulaire"),
13
+ siren_titulaire: z.string().regex(/^\d{9}$/).optional().describe("SIREN de l'entreprise titulaire (matche tous ses SIRET)"),
14
+ siret_acheteur: z.string().regex(/^\d{14}$/).optional().describe("SIRET de l'acheteur public"),
15
+ objet_contains: z.string().min(3).optional().describe("Recherche dans l'objet du marché"),
16
+ code_cpv: z.string().optional().describe("Code CPV (ex: 45000000 pour BTP)"),
17
+ departement: z.string().min(2).max(3).optional().describe("Code département du lieu d'exécution"),
18
+ date_from: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional().describe("Date notification minimale (YYYY-MM-DD)"),
19
+ date_to: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional().describe("Date notification maximale (YYYY-MM-DD)"),
20
+ montant_min: z.number().optional(),
21
+ limit: z.number().int().min(1).max(100).default(20).optional(),
22
+ }),
23
+ handler: async (input) => {
24
+ const where = [];
25
+ if (input.siret_titulaire)
26
+ where.push(`titulaire_id_1="${input.siret_titulaire}"`);
27
+ if (input.siren_titulaire)
28
+ where.push(`startswith(titulaire_id_1,"${input.siren_titulaire}")`);
29
+ if (input.siret_acheteur)
30
+ where.push(`acheteur_id="${input.siret_acheteur}"`);
31
+ if (input.objet_contains)
32
+ where.push(`search(objet,"${input.objet_contains.replace(/"/g, '\\"')}")`);
33
+ if (input.code_cpv)
34
+ where.push(`startswith(codecpv,"${input.code_cpv}")`);
35
+ if (input.departement)
36
+ where.push(`lieuexecution_code="${input.departement}"`);
37
+ if (input.date_from)
38
+ where.push(`datenotification>=date'${input.date_from}'`);
39
+ if (input.date_to)
40
+ where.push(`datenotification<=date'${input.date_to}'`);
41
+ if (input.montant_min !== undefined)
42
+ where.push(`montant>=${input.montant_min}`);
43
+ return connectors.decp.records(DECP_DATASET, {
44
+ where: where.length ? where.join(" AND ") : undefined,
45
+ orderBy: "datenotification desc",
46
+ limit: input.limit ?? 20,
47
+ });
48
+ },
49
+ });
50
+ export const publicContractTools = [publicContractsSearch];
51
+ //# sourceMappingURL=public-contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-contracts.js","sourceRoot":"","sources":["../../src/tools/public-contracts.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@altura_ma/onemcp",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "OneMCP — MCP server unifié pour les données business publiques France & Europe",
5
5
  "type": "module",
6
6
  "bin": {