@orq-ai/node 3.2.0-rc.50 → 3.2.0-rc.51

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 (55) hide show
  1. package/bin/mcp-server.js +58 -33
  2. package/bin/mcp-server.js.map +22 -21
  3. package/jsr.json +1 -1
  4. package/lib/config.d.ts +3 -3
  5. package/lib/config.js +3 -3
  6. package/mcp-server/extensions.d.ts +2 -0
  7. package/mcp-server/extensions.d.ts.map +1 -1
  8. package/mcp-server/mcp-server.js +1 -1
  9. package/mcp-server/prompts.d.ts +26 -0
  10. package/mcp-server/prompts.d.ts.map +1 -0
  11. package/mcp-server/prompts.js +47 -0
  12. package/mcp-server/prompts.js.map +1 -0
  13. package/mcp-server/resources.d.ts.map +1 -1
  14. package/mcp-server/resources.js +1 -0
  15. package/mcp-server/resources.js.map +1 -1
  16. package/mcp-server/server.d.ts.map +1 -1
  17. package/mcp-server/server.js +4 -2
  18. package/mcp-server/server.js.map +1 -1
  19. package/mcp-server/tools.d.ts.map +1 -1
  20. package/mcp-server/tools.js +1 -0
  21. package/mcp-server/tools.js.map +1 -1
  22. package/models/operations/bulkcreatedatapoints.js +2 -2
  23. package/models/operations/createcontact.js +2 -2
  24. package/models/operations/createdataset.js +2 -2
  25. package/models/operations/createdatasetitem.js +2 -2
  26. package/models/operations/fileget.js +2 -2
  27. package/models/operations/filelist.js +2 -2
  28. package/models/operations/fileupload.js +2 -2
  29. package/models/operations/listdatasetdatapoints.js +2 -2
  30. package/models/operations/listdatasets.js +2 -2
  31. package/models/operations/retrievedatapoint.js +2 -2
  32. package/models/operations/retrievedataset.js +2 -2
  33. package/models/operations/updatedatapoint.js +2 -2
  34. package/models/operations/updatedataset.js +2 -2
  35. package/package.json +1 -1
  36. package/src/lib/config.ts +3 -3
  37. package/src/mcp-server/extensions.ts +4 -0
  38. package/src/mcp-server/mcp-server.ts +1 -1
  39. package/src/mcp-server/prompts.ts +110 -0
  40. package/src/mcp-server/resources.ts +1 -0
  41. package/src/mcp-server/server.ts +4 -2
  42. package/src/mcp-server/tools.ts +1 -0
  43. package/src/models/operations/bulkcreatedatapoints.ts +2 -2
  44. package/src/models/operations/createcontact.ts +2 -2
  45. package/src/models/operations/createdataset.ts +2 -2
  46. package/src/models/operations/createdatasetitem.ts +2 -2
  47. package/src/models/operations/fileget.ts +2 -2
  48. package/src/models/operations/filelist.ts +2 -2
  49. package/src/models/operations/fileupload.ts +2 -2
  50. package/src/models/operations/listdatasetdatapoints.ts +2 -2
  51. package/src/models/operations/listdatasets.ts +2 -2
  52. package/src/models/operations/retrievedatapoint.ts +2 -2
  53. package/src/models/operations/retrievedataset.ts +2 -2
  54. package/src/models/operations/updatedatapoint.ts +2 -2
  55. package/src/models/operations/updatedataset.ts +2 -2
package/bin/mcp-server.js CHANGED
@@ -34231,9 +34231,9 @@ var init_config = __esm(() => {
34231
34231
  SDK_METADATA = {
34232
34232
  language: "typescript",
34233
34233
  openapiDocVersion: "2.0",
34234
- sdkVersion: "3.2.0-rc.50",
34235
- genVersion: "2.548.6",
34236
- userAgent: "speakeasy-sdk/typescript 3.2.0-rc.50 2.548.6 2.0 @orq-ai/node"
34234
+ sdkVersion: "3.2.0-rc.51",
34235
+ genVersion: "2.552.1",
34236
+ userAgent: "speakeasy-sdk/typescript 3.2.0-rc.51 2.552.1 2.0 @orq-ai/node"
34237
34237
  };
34238
34238
  });
34239
34239
 
@@ -35058,6 +35058,30 @@ var init_core = __esm(() => {
35058
35058
  };
35059
35059
  });
35060
35060
 
35061
+ // src/mcp-server/prompts.ts
35062
+ function createRegisterPrompt(logger, server, sdk, allowedScopes) {
35063
+ return (prompt) => {
35064
+ const scopes = prompt.scopes ?? [];
35065
+ if (!scopes.every((s) => allowedScopes.has(s))) {
35066
+ return;
35067
+ }
35068
+ if (prompt.args) {
35069
+ if (prompt.description) {
35070
+ server.prompt(prompt.name, prompt.description, prompt.args, async (args, ctx) => prompt.prompt(sdk, args, ctx));
35071
+ } else {
35072
+ server.prompt(prompt.name, prompt.args, async (args, ctx) => prompt.prompt(sdk, args, ctx));
35073
+ }
35074
+ } else {
35075
+ if (prompt.description) {
35076
+ server.prompt(prompt.name, prompt.description, async (ctx) => prompt.prompt(sdk, ctx));
35077
+ } else {
35078
+ server.prompt(prompt.name, async (ctx) => prompt.prompt(sdk, ctx));
35079
+ }
35080
+ }
35081
+ logger.debug("Registered prompt", { name: prompt.name });
35082
+ };
35083
+ }
35084
+
35061
35085
  // src/mcp-server/shared.ts
35062
35086
  async function consumeStream(stream) {
35063
35087
  const reader = stream.getReader();
@@ -36033,7 +36057,7 @@ var init_bulkcreatedatapoints = __esm(() => {
36033
36057
  created_by_id: stringType().optional(),
36034
36058
  updated_by_id: stringType().optional(),
36035
36059
  created: stringType().datetime({ offset: true }).transform((v2) => new Date(v2)).optional(),
36036
- updated: stringType().datetime({ offset: true }).default("2025-03-16T19:54:54.357Z").transform((v2) => new Date(v2))
36060
+ updated: stringType().datetime({ offset: true }).default("2025-03-17T08:28:29.867Z").transform((v2) => new Date(v2))
36037
36061
  }).transform((v2) => {
36038
36062
  return remap(v2, {
36039
36063
  _id: "id",
@@ -36054,7 +36078,7 @@ var init_bulkcreatedatapoints = __esm(() => {
36054
36078
  createdById: stringType().optional(),
36055
36079
  updatedById: stringType().optional(),
36056
36080
  created: dateType().transform((v2) => v2.toISOString()).optional(),
36057
- updated: dateType().default(() => new Date("2025-03-16T19:54:54.357Z")).transform((v2) => v2.toISOString())
36081
+ updated: dateType().default(() => new Date("2025-03-17T08:28:29.867Z")).transform((v2) => v2.toISOString())
36058
36082
  }).transform((v2) => {
36059
36083
  return remap(v2, {
36060
36084
  id: "_id",
@@ -36142,7 +36166,7 @@ var init_createcontact = __esm(() => {
36142
36166
  tags: arrayType(stringType()).optional(),
36143
36167
  metadata: recordType(anyType()).optional(),
36144
36168
  created: stringType().datetime({ offset: true }).transform((v2) => new Date(v2)).optional(),
36145
- updated: stringType().datetime({ offset: true }).default("2025-03-16T19:54:54.357Z").transform((v2) => new Date(v2))
36169
+ updated: stringType().datetime({ offset: true }).default("2025-03-17T08:28:29.867Z").transform((v2) => new Date(v2))
36146
36170
  }).transform((v2) => {
36147
36171
  return remap(v2, {
36148
36172
  external_id: "externalId",
@@ -36159,7 +36183,7 @@ var init_createcontact = __esm(() => {
36159
36183
  tags: arrayType(stringType()).optional(),
36160
36184
  metadata: recordType(anyType()).optional(),
36161
36185
  created: dateType().transform((v2) => v2.toISOString()).optional(),
36162
- updated: dateType().default(() => new Date("2025-03-16T19:54:54.357Z")).transform((v2) => v2.toISOString())
36186
+ updated: dateType().default(() => new Date("2025-03-17T08:28:29.867Z")).transform((v2) => v2.toISOString())
36163
36187
  }).transform((v2) => {
36164
36188
  return remap(v2, {
36165
36189
  externalId: "external_id",
@@ -36229,7 +36253,7 @@ var init_createdataset = __esm(() => {
36229
36253
  updated_by_id: stringType().optional(),
36230
36254
  metadata: lazyType(() => CreateDatasetMetadata$inboundSchema),
36231
36255
  created: stringType().datetime({ offset: true }).transform((v2) => new Date(v2)).optional(),
36232
- updated: stringType().datetime({ offset: true }).default("2025-03-16T19:54:54.357Z").transform((v2) => new Date(v2))
36256
+ updated: stringType().datetime({ offset: true }).default("2025-03-17T08:28:29.867Z").transform((v2) => new Date(v2))
36233
36257
  }).transform((v2) => {
36234
36258
  return remap(v2, {
36235
36259
  _id: "id",
@@ -36249,7 +36273,7 @@ var init_createdataset = __esm(() => {
36249
36273
  updatedById: stringType().optional(),
36250
36274
  metadata: lazyType(() => CreateDatasetMetadata$outboundSchema),
36251
36275
  created: dateType().transform((v2) => v2.toISOString()).optional(),
36252
- updated: dateType().default(() => new Date("2025-03-16T19:54:54.357Z")).transform((v2) => v2.toISOString())
36276
+ updated: dateType().default(() => new Date("2025-03-17T08:28:29.867Z")).transform((v2) => v2.toISOString())
36253
36277
  }).transform((v2) => {
36254
36278
  return remap(v2, {
36255
36279
  id: "_id",
@@ -36685,7 +36709,7 @@ var init_createdatasetitem = __esm(() => {
36685
36709
  created_by_id: stringType().optional(),
36686
36710
  updated_by_id: stringType().optional(),
36687
36711
  created: stringType().datetime({ offset: true }).transform((v2) => new Date(v2)).optional(),
36688
- updated: stringType().datetime({ offset: true }).default("2025-03-16T19:54:54.357Z").transform((v2) => new Date(v2))
36712
+ updated: stringType().datetime({ offset: true }).default("2025-03-17T08:28:29.867Z").transform((v2) => new Date(v2))
36689
36713
  }).transform((v2) => {
36690
36714
  return remap(v2, {
36691
36715
  _id: "id",
@@ -36706,7 +36730,7 @@ var init_createdatasetitem = __esm(() => {
36706
36730
  createdById: stringType().optional(),
36707
36731
  updatedById: stringType().optional(),
36708
36732
  created: dateType().transform((v2) => v2.toISOString()).optional(),
36709
- updated: dateType().default(() => new Date("2025-03-16T19:54:54.357Z")).transform((v2) => v2.toISOString())
36733
+ updated: dateType().default(() => new Date("2025-03-17T08:28:29.867Z")).transform((v2) => v2.toISOString())
36710
36734
  }).transform((v2) => {
36711
36735
  return remap(v2, {
36712
36736
  id: "_id",
@@ -41544,7 +41568,7 @@ var init_fileget = __esm(() => {
41544
41568
  bytes: numberType(),
41545
41569
  file_name: stringType(),
41546
41570
  workspace_id: stringType(),
41547
- created: stringType().datetime({ offset: true }).default("2025-03-16T19:54:55.464Z").transform((v2) => new Date(v2))
41571
+ created: stringType().datetime({ offset: true }).default("2025-03-17T08:28:30.977Z").transform((v2) => new Date(v2))
41548
41572
  }).transform((v2) => {
41549
41573
  return remap(v2, {
41550
41574
  _id: "id",
@@ -41560,7 +41584,7 @@ var init_fileget = __esm(() => {
41560
41584
  bytes: numberType(),
41561
41585
  fileName: stringType(),
41562
41586
  workspaceId: stringType(),
41563
- created: dateType().default(() => new Date("2025-03-16T19:54:55.464Z")).transform((v2) => v2.toISOString())
41587
+ created: dateType().default(() => new Date("2025-03-17T08:28:30.977Z")).transform((v2) => v2.toISOString())
41564
41588
  }).transform((v2) => {
41565
41589
  return remap(v2, {
41566
41590
  id: "_id",
@@ -41643,7 +41667,7 @@ var init_filelist = __esm(() => {
41643
41667
  bytes: numberType(),
41644
41668
  file_name: stringType(),
41645
41669
  workspace_id: stringType(),
41646
- created: stringType().datetime({ offset: true }).default("2025-03-16T19:54:55.464Z").transform((v2) => new Date(v2))
41670
+ created: stringType().datetime({ offset: true }).default("2025-03-17T08:28:30.977Z").transform((v2) => new Date(v2))
41647
41671
  }).transform((v2) => {
41648
41672
  return remap(v2, {
41649
41673
  _id: "id",
@@ -41659,7 +41683,7 @@ var init_filelist = __esm(() => {
41659
41683
  bytes: numberType(),
41660
41684
  fileName: stringType(),
41661
41685
  workspaceId: stringType(),
41662
- created: dateType().default(() => new Date("2025-03-16T19:54:55.464Z")).transform((v2) => v2.toISOString())
41686
+ created: dateType().default(() => new Date("2025-03-17T08:28:30.977Z")).transform((v2) => v2.toISOString())
41663
41687
  }).transform((v2) => {
41664
41688
  return remap(v2, {
41665
41689
  id: "_id",
@@ -41791,7 +41815,7 @@ var init_fileupload = __esm(() => {
41791
41815
  bytes: numberType(),
41792
41816
  file_name: stringType(),
41793
41817
  workspace_id: stringType(),
41794
- created: stringType().datetime({ offset: true }).default("2025-03-16T19:54:55.464Z").transform((v2) => new Date(v2))
41818
+ created: stringType().datetime({ offset: true }).default("2025-03-17T08:28:30.977Z").transform((v2) => new Date(v2))
41795
41819
  }).transform((v2) => {
41796
41820
  return remap(v2, {
41797
41821
  _id: "id",
@@ -41807,7 +41831,7 @@ var init_fileupload = __esm(() => {
41807
41831
  bytes: numberType(),
41808
41832
  fileName: stringType(),
41809
41833
  workspaceId: stringType(),
41810
- created: dateType().default(() => new Date("2025-03-16T19:54:55.464Z")).transform((v2) => v2.toISOString())
41834
+ created: dateType().default(() => new Date("2025-03-17T08:28:30.977Z")).transform((v2) => v2.toISOString())
41811
41835
  }).transform((v2) => {
41812
41836
  return remap(v2, {
41813
41837
  id: "_id",
@@ -43859,7 +43883,7 @@ var init_listdatasetdatapoints = __esm(() => {
43859
43883
  created_by_id: stringType().optional(),
43860
43884
  updated_by_id: stringType().optional(),
43861
43885
  created: stringType().datetime({ offset: true }).transform((v2) => new Date(v2)).optional(),
43862
- updated: stringType().datetime({ offset: true }).default("2025-03-16T19:54:54.357Z").transform((v2) => new Date(v2))
43886
+ updated: stringType().datetime({ offset: true }).default("2025-03-17T08:28:29.867Z").transform((v2) => new Date(v2))
43863
43887
  }).transform((v2) => {
43864
43888
  return remap(v2, {
43865
43889
  _id: "id",
@@ -43880,7 +43904,7 @@ var init_listdatasetdatapoints = __esm(() => {
43880
43904
  createdById: stringType().optional(),
43881
43905
  updatedById: stringType().optional(),
43882
43906
  created: dateType().transform((v2) => v2.toISOString()).optional(),
43883
- updated: dateType().default(() => new Date("2025-03-16T19:54:54.357Z")).transform((v2) => v2.toISOString())
43907
+ updated: dateType().default(() => new Date("2025-03-17T08:28:29.867Z")).transform((v2) => v2.toISOString())
43884
43908
  }).transform((v2) => {
43885
43909
  return remap(v2, {
43886
43910
  id: "_id",
@@ -44000,7 +44024,7 @@ var init_listdatasets = __esm(() => {
44000
44024
  updated_by_id: stringType().optional(),
44001
44025
  metadata: lazyType(() => ListDatasetsMetadata$inboundSchema),
44002
44026
  created: stringType().datetime({ offset: true }).transform((v2) => new Date(v2)).optional(),
44003
- updated: stringType().datetime({ offset: true }).default("2025-03-16T19:54:54.357Z").transform((v2) => new Date(v2))
44027
+ updated: stringType().datetime({ offset: true }).default("2025-03-17T08:28:29.867Z").transform((v2) => new Date(v2))
44004
44028
  }).transform((v2) => {
44005
44029
  return remap(v2, {
44006
44030
  _id: "id",
@@ -44020,7 +44044,7 @@ var init_listdatasets = __esm(() => {
44020
44044
  updatedById: stringType().optional(),
44021
44045
  metadata: lazyType(() => ListDatasetsMetadata$outboundSchema),
44022
44046
  created: dateType().transform((v2) => v2.toISOString()).optional(),
44023
- updated: dateType().default(() => new Date("2025-03-16T19:54:54.357Z")).transform((v2) => v2.toISOString())
44047
+ updated: dateType().default(() => new Date("2025-03-17T08:28:29.867Z")).transform((v2) => v2.toISOString())
44024
44048
  }).transform((v2) => {
44025
44049
  return remap(v2, {
44026
44050
  id: "_id",
@@ -44944,7 +44968,7 @@ var init_retrievedatapoint = __esm(() => {
44944
44968
  created_by_id: stringType().optional(),
44945
44969
  updated_by_id: stringType().optional(),
44946
44970
  created: stringType().datetime({ offset: true }).transform((v2) => new Date(v2)).optional(),
44947
- updated: stringType().datetime({ offset: true }).default("2025-03-16T19:54:54.357Z").transform((v2) => new Date(v2))
44971
+ updated: stringType().datetime({ offset: true }).default("2025-03-17T08:28:29.867Z").transform((v2) => new Date(v2))
44948
44972
  }).transform((v2) => {
44949
44973
  return remap(v2, {
44950
44974
  _id: "id",
@@ -44965,7 +44989,7 @@ var init_retrievedatapoint = __esm(() => {
44965
44989
  createdById: stringType().optional(),
44966
44990
  updatedById: stringType().optional(),
44967
44991
  created: dateType().transform((v2) => v2.toISOString()).optional(),
44968
- updated: dateType().default(() => new Date("2025-03-16T19:54:54.357Z")).transform((v2) => v2.toISOString())
44992
+ updated: dateType().default(() => new Date("2025-03-17T08:28:29.867Z")).transform((v2) => v2.toISOString())
44969
44993
  }).transform((v2) => {
44970
44994
  return remap(v2, {
44971
44995
  id: "_id",
@@ -45036,7 +45060,7 @@ var init_retrievedataset = __esm(() => {
45036
45060
  updated_by_id: stringType().optional(),
45037
45061
  metadata: lazyType(() => RetrieveDatasetMetadata$inboundSchema),
45038
45062
  created: stringType().datetime({ offset: true }).transform((v2) => new Date(v2)).optional(),
45039
- updated: stringType().datetime({ offset: true }).default("2025-03-16T19:54:54.357Z").transform((v2) => new Date(v2))
45063
+ updated: stringType().datetime({ offset: true }).default("2025-03-17T08:28:29.867Z").transform((v2) => new Date(v2))
45040
45064
  }).transform((v2) => {
45041
45065
  return remap(v2, {
45042
45066
  _id: "id",
@@ -45056,7 +45080,7 @@ var init_retrievedataset = __esm(() => {
45056
45080
  updatedById: stringType().optional(),
45057
45081
  metadata: lazyType(() => RetrieveDatasetMetadata$outboundSchema),
45058
45082
  created: dateType().transform((v2) => v2.toISOString()).optional(),
45059
- updated: dateType().default(() => new Date("2025-03-16T19:54:54.357Z")).transform((v2) => v2.toISOString())
45083
+ updated: dateType().default(() => new Date("2025-03-17T08:28:29.867Z")).transform((v2) => v2.toISOString())
45060
45084
  }).transform((v2) => {
45061
45085
  return remap(v2, {
45062
45086
  id: "_id",
@@ -45496,7 +45520,7 @@ var init_updatedatapoint = __esm(() => {
45496
45520
  created_by_id: stringType().optional(),
45497
45521
  updated_by_id: stringType().optional(),
45498
45522
  created: stringType().datetime({ offset: true }).transform((v2) => new Date(v2)).optional(),
45499
- updated: stringType().datetime({ offset: true }).default("2025-03-16T19:54:54.357Z").transform((v2) => new Date(v2))
45523
+ updated: stringType().datetime({ offset: true }).default("2025-03-17T08:28:29.867Z").transform((v2) => new Date(v2))
45500
45524
  }).transform((v2) => {
45501
45525
  return remap(v2, {
45502
45526
  _id: "id",
@@ -45517,7 +45541,7 @@ var init_updatedatapoint = __esm(() => {
45517
45541
  createdById: stringType().optional(),
45518
45542
  updatedById: stringType().optional(),
45519
45543
  created: dateType().transform((v2) => v2.toISOString()).optional(),
45520
- updated: dateType().default(() => new Date("2025-03-16T19:54:54.357Z")).transform((v2) => v2.toISOString())
45544
+ updated: dateType().default(() => new Date("2025-03-17T08:28:29.867Z")).transform((v2) => v2.toISOString())
45521
45545
  }).transform((v2) => {
45522
45546
  return remap(v2, {
45523
45547
  id: "_id",
@@ -45612,7 +45636,7 @@ var init_updatedataset = __esm(() => {
45612
45636
  parent_id: stringType().optional(),
45613
45637
  version: stringType().optional(),
45614
45638
  created: stringType().datetime({ offset: true }).transform((v2) => new Date(v2)).optional(),
45615
- updated: stringType().datetime({ offset: true }).default("2025-03-16T19:54:54.357Z").transform((v2) => new Date(v2))
45639
+ updated: stringType().datetime({ offset: true }).default("2025-03-17T08:28:29.867Z").transform((v2) => new Date(v2))
45616
45640
  }).transform((v2) => {
45617
45641
  return remap(v2, {
45618
45642
  _id: "id",
@@ -45635,7 +45659,7 @@ var init_updatedataset = __esm(() => {
45635
45659
  parentId: stringType().optional(),
45636
45660
  version: stringType().optional(),
45637
45661
  created: dateType().transform((v2) => v2.toISOString()).optional(),
45638
- updated: dateType().default(() => new Date("2025-03-16T19:54:54.357Z")).transform((v2) => v2.toISOString())
45662
+ updated: dateType().default(() => new Date("2025-03-17T08:28:29.867Z")).transform((v2) => v2.toISOString())
45639
45663
  }).transform((v2) => {
45640
45664
  return remap(v2, {
45641
45665
  id: "_id",
@@ -51172,7 +51196,7 @@ var init_remoteconfigsRetrieve2 = __esm(() => {
51172
51196
  function createMCPServer(deps) {
51173
51197
  const server = new McpServer({
51174
51198
  name: "Orq",
51175
- version: "3.2.0-rc.50"
51199
+ version: "3.2.0-rc.51"
51176
51200
  });
51177
51201
  const client = new OrqCore({
51178
51202
  apiKey: deps.apiKey,
@@ -51186,7 +51210,8 @@ function createMCPServer(deps) {
51186
51210
  const tool = createRegisterTool(deps.logger, server, client, scopes, allowedTools);
51187
51211
  const resource = createRegisterResource(deps.logger, server, client, scopes);
51188
51212
  const resourceTemplate = createRegisterResourceTemplate(deps.logger, server, client, scopes);
51189
- const register = { tool, resource, resourceTemplate };
51213
+ const prompt = createRegisterPrompt(deps.logger, server, client, scopes);
51214
+ const register = { tool, resource, resourceTemplate, prompt };
51190
51215
  tool(tool$contactsCreate);
51191
51216
  tool(tool$feedbackCreate);
51192
51217
  tool(tool$deploymentsList);
@@ -52464,7 +52489,7 @@ var routes = rn({
52464
52489
  var app = Ve(routes, {
52465
52490
  name: "mcp",
52466
52491
  versionInfo: {
52467
- currentVersion: "3.2.0-rc.50"
52492
+ currentVersion: "3.2.0-rc.51"
52468
52493
  }
52469
52494
  });
52470
52495
  _t(app, process3.argv.slice(2), buildContext(process3));
@@ -52472,5 +52497,5 @@ export {
52472
52497
  app
52473
52498
  };
52474
52499
 
52475
- //# debugId=3F9413371F15981264756E2164756E21
52500
+ //# debugId=F7D3967D1A22E47764756E2164756E21
52476
52501
  //# sourceMappingURL=mcp-server.js.map