Class: OmnifocusMcp::Tools::Generators::AddOmniFocusTask

Inherits:
Object
  • Object
show all
Defined in:
lib/omnifocus_mcp/tools/generators/add_omnifocus_task.rb

Overview

Add a task to OmniFocus.

Returns an Result whose ok payload is a Created carrying the new task’s id and placement.

Defined Under Namespace

Classes: Created

Class Method Summary collapse

Class Method Details

.call(params) ⇒ Object

Run the generated AppleScript against OmniFocus and parse the JSON result.

Parameters:



39
40
41
42
43
# File 'lib/omnifocus_mcp/tools/generators/add_omnifocus_task.rb', line 39

def call(params)
  require_relative "../operations/add_omnifocus_task"

  Operations::AddOmniFocusTask.call(params)
end

.generate_apple_script(params) ⇒ Object



26
27
28
29
30
31
32
33
34
35
# File 'lib/omnifocus_mcp/tools/generators/add_omnifocus_task.rb', line 26

def generate_apple_script(params)
  params = Params::McpBoundary.coerce(Params::AddTaskParams, params)
  fields = extract_fields(params)
  date_pre_script, date_vars = build_date_pre_scripts(params)

  body = document_body(fields:, date_vars:)

  preamble = date_pre_script.empty? ? "" : "#{date_pre_script}\n"
  preamble + Infrastructure::AppleScript.tell_document(body)
end

.generate_bulk_apple_script(params_list) ⇒ Object

Combine multiple independent tasks into one osascript invocation.



46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/omnifocus_mcp/tools/generators/add_omnifocus_task.rb', line 46

def generate_bulk_apple_script(params_list)
  pre_scripts = params_list.flat_map { |params| date_pre_script_for(params) }

  bodies = params_list.map { |params| bulk_item_body(params) }
  preamble = pre_scripts.join("\n\n")
  preamble += "\n\n" unless preamble.empty?
  preamble += <<~APPLESCRIPT
    set bulkTaskIds to {}
    set bulkPlacements to {}
  APPLESCRIPT

  inner = (bodies + [bulk_finalize_return]).join("\n\n")
  preamble + "\n\n#{Infrastructure::AppleScript.tell_document(inner)}"
end